[英]How to move objects diagonally in SFML?
因此,可以通过更改y
变量来上下移动对象。 我可以通过更改x
变量左右移动对象。 但是,如何以相同的速度对角移动。 如果我只是做
x += velocity;
y += velocity;
它将以大约1.5倍的速度移动。
是否存在某种带有cos
和sin
的方程式,以使对象沿其指向的方向运动? 我希望能够使用内置在setRotation()
函数中的SFML(Simple Fast Multimedia Library)
来更改其方向。
先感谢您。
在SFML中旋转对象不会影响其前进方向。 因此,您必须自己实施。
x+=vel*sin(angle)
y+=vel*cos(angle)
对于对角线移动角度= 45度或(45 * PI)/ 180弧度,取决于您使用的是哪个sin / cos库(C / C ++库需要以弧度为参数)。
这里的答案并没有真正向您展示为什么这些转换是如此有用。 例如,假设您有一个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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.