让精灵沿着一个角度行走
Make sprite walk along an angle
我试图让一个精灵走向另一个精灵,
movement_angle = (atan2((y - target->y),(x - target->x)));
if(isWalkable(game,delta))
{
y -= ((int)(movementspeed)*delta)*sin(((movement_angle)));
x -= ((int)(movementspeed)*delta)*cos(((movement_angle)));
}
我正在计算角度并将值添加到我的 x 和 y 线中。但是运动并不完美,它并没有真正按照我的意愿跟随,采取奇怪的转弯等等。
很难确切地说出代码出了什么问题,但您可以查看以下一些内容:
- 要获得从一个点到
target
的向量,您需要将target->x
减去该点的x
,target->y
减去该点的y
- 至少
movement_angle
需要是一个浮点数,尽管您可能希望对所有 3D 几何值使用doubles
- 为什么要费心使用三角函数?你想直接从点
x
,y
走到target->x
,target->y
,为什么不直接使用一个向量,归一化它,然后乘以你的movementspeed
和delta
?
好吧,
您正在将代数结果转换为整数。我认为这可能会导致您的问题。
相关文章:
- OpenGL 2D游戏只绘制第二个精灵纹理而不是第一个
- 如何在屏幕上多次复制一个精灵,每个精灵都有相同的代码
- 我已经创建了一个精灵的否,并以相同的参考将它们添加到场景中,现在,如何使用标签删除它们
- 让精灵沿着一个角度行走
- 使用C 组合精灵的不同部分在iOS游戏中形成一个单个精灵
- COCOS2D-X:从另一个线程中加载精灵,任何模式
- 我们可以在 SFML/C++ 中制作一个精灵数组吗?
- SFML 2.1如何使一个精灵面对另一个精灵
- 如何在SFML中将一个精灵放在另一个精灵上
- SFML在另一个类中绘制移动精灵
- 以相同的速度将精灵从一个点移动到另一个点
- 如何在Cocos2d中添加一个始终在屏幕上的精灵
- 循环一个精灵以显示不止一次
- 如何在SFML中制作一个可点击的精灵
- 如何传递一个c++对象变量到Lua脚本,以便动画精灵
- 用VBO和FBO绘制一个移动的精灵
- 抛出了一个奇怪的异常:在SFML中获取精灵图像的高度
- 防止将一个精灵移动到另一个精灵上
- DarkGDK,在精灵刷出时间之间设置一个间隔
- 我如何设置一个if语句来动画一个精灵