我正在制作这个游戏,其中物体应该沿着Bezier曲线移动,我已经计算并成功绘制了切线和法线,但我似乎无法使Box沿着切线的方向移动。我是SFML的新手,希望有人能给出建议和指导。
编辑:例如,当我只按右箭头键时,我想将对象从(0,0)坐标移动到(3,7)。我知道我应该使用向量和规范化的概念,但我不理解我观看过的教程视频。
答案 0 :(得分:2)
此问题有两个部分,检测输入然后实际移动对象。假设你已经覆盖了输入(请说如果没有),那么我将专注于移动对象:
如果某个对象继承自sf::Transformable
,您将可以使用许多转换函数,例如setPosition(x,y)
和move(x,y)
(它们执行不同的操作!)
基于您的基本示例,使用继承自sf::RectangleShape
的{{1}}:
sf::Transformable
有几点要提及:
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()
是绝对的,请不要忘记!