SFML如何在向下移动时围绕屏幕中心旋转?

时间:2018-10-08 14:47:09

标签: c++ windows sfml

所以我必须在向下移动时移动围绕屏幕中心(这是对象在X中的原始位置)旋转的精灵。由于子画面在屏幕周围无处不在,我还没有找到使其工作的方法。

move(0, speed);
angle = getRotation();
rotate(+1);
move(origPosX + cosf(angle) * speed, origPosY + sinf(angle) * speed);

1 个答案:

答案 0 :(得分:0)

我只能假设您每帧都在运行问题中的代码,在这种情况下,您应该使用setPosition,而不是move,否则它将为不断旋转。

您还为每帧的旋转增加了1,除非您锁定帧速率,否则这将是不一致的,因此我建议乘以自上一帧以来的时间(又称为“增量时间”)。

此外,SFML中的旋转以度为单位,但是cosf以弧度为参数,因此您需要对其进行转换。

您想要执行以下操作:

position += sf::Vector2f(0.f, speed);
rotate(1.f * deltaTime);
setPosition(position.y + cosf(toRadians(angle)), position.y + sinf(toRadians(angle)));