我一直在尝试制作一款塔防游戏游戏,其中暴徒被赋予了以给定速度移动的目的地,以及它的设置方式现在使用updateAngle()方法发生了一些奇怪的事情我是不确定。
// Destination is represented by Coordinates[index]
public void Update(GameTime time)
{
Position.Y -= (float)(time.ElapsedGameTime.TotalSeconds * velocity * Math.Cos(angle));
Position.X += (float)(time.ElapsedGameTime.TotalSeconds * velocity * Math.Sin(angle));
float remainingX = Math.Abs(Destination.X - Position.Y);
float remainingY = Math.Abs(Destination.Y - Position.Y);
if (remainingX < 2 && remainingY < 2)
{
index++;
if (index == Coordinates.Count - 1)
{
End = true;
}
else
{
updateAngle();
}
}
}
private void updateAngle()
{
angle = (float)Math.Atan((Position.Y - Destination.Y) / (Position.X - Destination.X));
}
答案 0 :(得分:0)
如果位置和目的地正确,则给出正确的角度:
angle = Math.Atan2(Destination.Y-Position.Y, Destination.X-Position.X)