C#矢量、角度和旋转
我有一艘飞船,它有位置,目的地和旋转。当它有一个新的目的地时,它一直向前移动,同时顺时针旋转,直到它面对它的目的地 代码: 我的问题是,船只会朝一个方向旋转,直到它面对它的目标,我需要它朝着最短路线的方向旋转C#矢量、角度和旋转,c#,vector,rotation,2d,C#,Vector,Rotation,2d,我有一艘飞船,它有位置,目的地和旋转。当它有一个新的目的地时,它一直向前移动,同时顺时针旋转,直到它面对它的目的地 代码: 我的问题是,船只会朝一个方向旋转,直到它面对它的目标,我需要它朝着最短路线的方向旋转 我真的不知道从哪里开始,这是我第一次真正尝试向量。从directionNow到requiredDirection的角度由Math.Atan2(requiredDirection.Y,requiredDirection.X)-Math.Atan2(directionNow.Y,directi
我真的不知道从哪里开始,这是我第一次真正尝试向量。从
directionNow
到requiredDirection
的角度由Math.Atan2(requiredDirection.Y,requiredDirection.X)-Math.Atan2(directionNow.Y,directionNow.X)
给出。逆时针旋转为正,顺时针旋转为负。从directionNow
到requiredDirection
的角度由Math.Atan2(requiredDirection.Y,requiredDirection.X)-Math.Atan2(directionNow.Y,directionNow.X)
给出。逆时针旋转为正,顺时针旋转为负。谢谢马克,我刚刚试过,效果不错。然而,当设置一些目的地时,飞船将在向左旋转和向右旋转之间切换,交错地离开目的地,毫无疑问,我的代码中有一个bug,希望我能修复它。不管怎样,你的代码工作得很好。谢谢马克,我刚刚试过,它工作得很好。然而,当设置一些目的地时,飞船将在向左旋转和向右旋转之间切换,交错地离开目的地,毫无疑问,我的代码中有一个bug,希望我能修复它。不管怎样,你的代码工作得很好。
public void Move()
{
Vector requiredDirection = destination - origin;
requiredDirection.Normalize();
Vector directionNow = new Vector((float)Math.Cos(rotation), (float)Math.Sin(rotation));
float x = Math.Abs(requiredDirection.X - directionNow.X);
float y = Math.Abs(requiredDirection.Y - directionNow.Y);
if ((x > rotationSpeed) || (y > rotationSpeed))
{
rotation += rotationSpeed;
}
shipPosition += directionNow * speed;
}