如何使形状沿Bezier曲线SFML移动?

时间:2017-04-15 06:28:35

标签: c++ game-physics sfml

我正在制作这个游戏,其中物体应该沿着Bezier曲线移动,我已经计算并成功绘制了切线和法线,但我似乎无法使Box沿着切线的方向移动。我是SFML的新手,希望有人能给出建议和指导。

编辑:例如,当我只按右箭头键时,我想将对象从(0,0)坐标移动到(3,7)。我知道我应该使用向量和规范化的概念,但我不理解我观看过的教程视频。

1 个答案:

答案 0 :(得分:2)

此问题有两个部分,检测输入然后实际移动对象。假设你已经覆盖了输入(请说如果没有),那么我将专注于移动对象:

如果某个对象继承自sf::Transformable,您将可以使用许多转换函数,例如setPosition(x,y)move(x,y)(它们执行不同的操作!)

基于您的基本示例,使用继承自sf::RectangleShape的{​​{1}}:

sf::Transformable

有几点要提及:

  • 您可能会发现使用事件更好地输入作品,特别是如果您每次按下只需要一个动作(isKeyPressed直接查询键的状态,而事件发送一次按下/已发布的事件
  • sf::RectangleShape shape({5.f,5.f}); // A square, 5 pixels wide sf::Vector2f movementThisFrame(3.f,7.f); //this would be the value from your curve if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) shape.move(movementThisFrame); 与当前位置有关,而move()是绝对的,请不要忘记!