Ik ben een spel aan het maken in XNA met tanks. En daarin kan je richten etc. met je muis.
Het is 2d en van bovenaf gezien.
En nu heb ik dus een tank die naar de muis moet gaan richten. Maar niet ineens maar langzaam moet gaan draaien naar de muis.
Hiervoor heb ik de muispositie, tankpositie, tankturretRotatie, en een constante tankturretrotatiesnelheid, en plaats van de plaats waarop je richt
Hiervoor heb ik dus een soort van manier bedacht:
1. Draai de turret eerst
2. Bereken de distance de muis naar de tank
3. Bereken de vector die uit de turret komt dus met cos/sin dat je een x,y vector hebt met lengte 1.
4. doe de distance keer de vector.
5. Dat is dan je nieuwe dotPositie.
Maar ik loop vast bij nummer 2, want dan moet hij links/rechtsom draaien en ik kan niet bedenken hoe ik dat zou moeten doen.
Iemand helpen?
Edit heb het gefixt:
Het is 2d en van bovenaf gezien.
En nu heb ik dus een tank die naar de muis moet gaan richten. Maar niet ineens maar langzaam moet gaan draaien naar de muis.
Hiervoor heb ik de muispositie, tankpositie, tankturretRotatie, en een constante tankturretrotatiesnelheid, en plaats van de plaats waarop je richt
Hiervoor heb ik dus een soort van manier bedacht:
1. Draai de turret eerst
2. Bereken de distance de muis naar de tank
3. Bereken de vector die uit de turret komt dus met cos/sin dat je een x,y vector hebt met lengte 1.
4. doe de distance keer de vector.
5. Dat is dan je nieuwe dotPositie.
Maar ik loop vast bij nummer 2, want dan moet hij links/rechtsom draaien en ik kan niet bedenken hoe ik dat zou moeten doen.
Iemand helpen?
Edit heb het gefixt:
Code:
public void TurnToPoint(GameTime gameTime, Vector2 Point)
{
float angle = Angle(Point - Position);
if (angle != TurretExactRotation)
{
float difference = MathHelper.WrapAngle(angle - TurretExactRotation);
if (difference < 0)
RelativeTurretRotation = MathHelper.WrapAngle(RelativeTurretRotation - (TurnSpeedTurret * (float)gameTime.ElapsedGameTime.TotalSeconds));
if (difference > 0)
RelativeTurretRotation = MathHelper.WrapAngle(RelativeTurretRotation + (TurnSpeedTurret * (float)gameTime.ElapsedGameTime.TotalSeconds));
}
}
Laatst bewerkt: