所以我可以通过更改y
变量来上下移动我的对象。
我可以通过更改x
变量来左右移动我的对象。
但是我如何以相同的速度对角移动。
如果我只是做
x += velocity;
y += velocity;
它将移动约1.5倍。
是否有某种方程cos
和sin
使对象沿指向的方向移动?
我希望能够使用SFML(Simple Fast Multimedia Library)
内置函数setRotation()
来改变它的方向。
提前谢谢。
答案 0 :(得分:4)
在SFML旋转中,对象不会影响它的移动方向。所以你必须自己实现它。
x+=vel*sin(angle)
y+=vel*cos(angle)
对角线移动角度= 45度或(45 * PI)/ 180弧度,取决于您使用的sin / cos库(C / C ++库需要弧度作为参数)。
答案 1 :(得分:0)
这里的答案并没有真正向您展示为什么变换如此有用。例如,假设您有一个Vector2f
表示物体在单个“嘀嗒”上移动的距离。你可以获得相对于物体旋转的速度。对于复杂的事情,这很可能更方便。
sf::Transform rotation;
rotation.setRotation(getRotation());
sf::Vector2f velocity;//This could be (1,0) or (0,1) (or anything else)
setPosition(getPosition()+rotation.transformPoint(velocity);