【发布时间】:2012-03-21 15:39:45
【问题描述】:
假设我有一个向量 (x,y),它通过旋转与原点对齐(例如,向上 30 度)。
如果我想将该向量相对于方向移动一个单位(因此,一个单位向前向上 30 度),我该怎么做?
我正在制作一个简单的第三人称游戏,我希望能够旋转角色并使其向前移动,而不管旋转如何,我有点不知道如何做到这一点。
编辑:
在回答完这个问题后,我继续研究如何获得向后,向左和向右移动,所以我想如果有人需要帮助,我会把它贴在这里以供参考。
鉴于 Gunther2 的代码, 要获得向后运动,只需从当前位置减去位移:
position -= displacement;
要获得左运动,请将位移变量更改为
displacement.x = (float)Math.Sin(angle + PI/2);
displacement.y = (float)Math.Cos(angle + PI/2);
如果 Sin/Cos 接受度数而不是弧度,则将 PI/2 替换为 90。
然后减去位移:
position -= displacement;
要获得正确的运动,只需按照相同的步骤添加新的位移:
position += displacement;
【问题讨论】:
标签: vector rotation trigonometry