我开始用java编写游戏。我有敌人和玩家,一个基本的2D游戏,这是第一次获得经验。
现在我希望敌人遵循一条路径,我可以将其绘制到“关卡编辑器”中。
我有一个 JPanel、一个 mouseMoveListener,单击 Path2D 开始将 mouseMove 点保存到 Path2D.Double 对象。
之后,我实现了以下方法让敌人沿着这条路走:
public void forward(){
if(!pathIterator.isDone()){
pathIterator.currentSegment(current);
x = current[0];
y = current[1];
pathIterator.next();
}
else {
dead = true;
}
}
我认为现在发生的事情很清楚:敌人正在跟踪,但速度是我移动鼠标的速度。因此,如果我快速移动到鼠标,敌人就会......从一个点“跳”到另一个点。放慢速度,它“偷偷”越过这些点。 (因为我不是机器人,所以我不能以相同的速度移动鼠标^^)
谈论机器人:是的,我可以让 awt.Robot 移动我的鼠标。但这也是不可能的,因为我必须绘制复杂的路径,而这些路径背后没有任何可见的数学。
所以,我想让这个敌人以同样的速度在这条路上移动。我的问题:我不知道在哪里实施“修复”。我有两个想法:
那么,这种方法是否可能,如果是,有人知道如何计算吗?
如果没有,我还有什么其他可能性来实现这一目标?
谢谢你,抱歉英语不好!
您需要做的就是定义敌人类别中敌人的移动速度。
当它计算出下一个要移动的点时,然后通过新位置减去当前位置来创建方向向量。
标准化方向向量(因此长度为 1),然后将其乘以速度和 tpf(每帧时间)。
移动该量而不是跳到下一个点。
(请注意,如果这些点非常接近或帧速率较低,这可能会导致它有点过冲,但应该没问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)