如何在 SFML 中对角线移动对象
How to move objects diagonally in SFML?
所以我可以通过更改y
变量来上下移动我的对象。我可以通过更改 x
变量来左右移动我的对象。但是我如何以相同的速度对角线移动。如果我只是做
x += velocity;
y += velocity;
它的移动速度会快约 1.5 倍。
是否有某种具有cos
和sin
的方程可以使物体朝着它所指向的方向移动?我希望能够通过内置SFML(Simple Fast Multimedia Library)
函数setRotation()
来改变它的方向。
提前谢谢你。
在 SFML 中,旋转对象不会影响其移动方向。所以你必须自己实现它。
x+=vel*sin(angle)
y+=vel*cos(angle)
对于对角移动角度 = 45 度或 (45*PI)/180 弧度,具体取决于您使用的正弦/余弦库(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);
相关文章:
- 将对象移动到std::shared_ptr
- 何时在引用或唯一指针上使用移动语义
- 如何从具有移动语义的类对象中生成共享指针
- 将shared_ptr移动到<StructA>shared_ptr<变体<结构A、结构 B>>
- C / C++ 移位/偏移/向左或向右移动位图?
- MSVC将仅移动结构参数解释为指针
- 自定义先决条件对移动分配运算符有效吗
- 返回值优化:显式移动还是隐式
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 为什么复制而不是移动数据元素?
- 如何在cuSparse中得到稀疏矩阵的对角线
- 可以使用移动语义更改或改进此C++代码吗?
- 使lambda不可复制/不可移动
- c++在使用指针时移动语义
- 将QGraphicsItem的移动区域限制在多边形区域内
- 如何打印数组对角线的一侧
- 没有对角线移动的Dijkstra算法
- 如何在 SFML 中对角线移动对象
- glTranslatef沿对角线移动,而不是在主轴上移动
- 实现对角线移动时,2个箭头键按下(与SFML)