如何做2d矢量运动

时间:2010-03-15 17:13:46

标签: c# vector 2d

我的屏幕对象有一个var旋转(以度为单位)。

我如何修复它所以当我向上推箭头时它向前移动而不仅仅是x ++和y ++?

4 个答案:

答案 0 :(得分:8)

不是100%确定这是你想要的,但我想你想做:

x += speed * cos(angle);
y += speed * sin(angle);

angle是对象的旋转,xy是其坐标。 speed是你对象的速度。

答案 1 :(得分:6)

x += sin(rotation) * speed;
y += cos(rotation) * speed;

但这取决于你的旋转方向。此代码适用于向上(向北)0度旋转,顺时针方向移动。

答案 2 :(得分:1)

使用三角法。

你有角度和移动长度(这是你的斜边)所以你应该能够使用sin或cos来计算所需的x和y移动量。

答案 3 :(得分:1)

只是为了澄清,因为这是C#,你想要这样做

double radians = (Math.PI/180)*angleInDegrees;
x += speed * Math.Cos(radians);
y += speed * Math.Sin(radians);

正如其他海报所提到的,这是基于使用三角法将旋转应用于速度向量(在这种情况下,0度向量指向右侧)。