SFML 形状无限旋转
SFML shape rotates infinitely
我正在制作一个围绕图形移动的机器人手臂,但是当我尝试用键盘旋转形状时,它会无限旋转:我希望它只在我按向右箭头时旋转一次。我该如何解决这个问题?
Transform transform;
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
if (event.type == Event::KeyPressed)
{
switch (event.key.code)
{
case Keyboard::Right:
ang += 1;
}
}
window.clear(Color::White);
window.draw(braccio, transform);
transform.rotate(ang, WIDTH / 2, HEIGHT / 2);
window.draw(assi);
window.display();
}
现在,这一行
transform.rotate(ang, WIDTH / 2, HEIGHT / 2);
在程序的每一帧上调用,因为它位于不断运行的主循环中。如果希望它仅在游戏检测到某些输入时发生,请将其放入事件轮询中,如下所示:
while (window.pollEvent(event))
{
// Do your event handling in here, input, etc.
if (event.type == Event::Closed)
window.close();
// This event case should also be inside here.
if (event.type == Event::KeyPressed)
{
switch (event.key.code)
{
case Keyboard::Right:
transform.rotate(ang, WIDTH / 2, HEIGHT / 2);
break;
}
}
}
否则,您的手臂将继续无限期地旋转。
编辑:感谢@alseether指出Transform::rotate
函数将角度添加到形状的当前旋转中。所以每次递增ang
都会逐渐让形状旋转得越来越快......如果您不希望发生这种情况,只需将ang
设置为常量值,它将以恒定速率旋转立方体。
相关文章:
- 与互斥锁相比,旋转锁可以保证上下文切换
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- visual是否可以在c++中创建一个接收无限数量相同类型(或至少相当数量)参数的函数
- 四边形的 2D 旋转
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 循环无限运行C++解决骑士之旅问题
- 过载'operator new'如何导致无限循环?
- 发布旋转矩阵(openGL/glm)
- 在Qt中实现无限可缩放的画布
- C++正则表达式无限循环
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 顺时针迭代旋转 3 位数字
- 交换运算符 + 重载会导致无限递归
- 无限嵌套具有变体的地图
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 遍历链表时的无限循环
- 如何有效地计算将单位立方体映射到自身的反射和旋转?
- SFML 形状无限旋转