繁体   English   中英

如何在SFML中对角移动对象?

[英]How to move objects diagonally in SFML?

因此,可以通过更改y变量来上下移动对象。 我可以通过更改x变量左右移动对象。 但是,如何以相同的速度对角移动。 如果我只是做

x += velocity;
y += velocity;

它将以大约1.5倍的速度移动。

是否存在某种带有cossin的方程式,以使对象沿其指向的方向运动? 我希望能够使用内置在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM