我开始用java编写游戏。我有 Enemys and a Player,一个基本的 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 移动我的鼠标。但这也不太可能,因为我必须绘制复杂的路径,这些路径背后没有任何可见的数学。
所以,我想让这个敌人以同样的速度在这条路上前进。我的问题:我不知道在哪里实施“修复”。我有两个想法:
也许我可以创建路径:不只是将点添加到 Path2D,也许我可以计算我快速移动的点之间的点,或者删除彼此靠近的点。但是:首先,我不知道如何计算,(是否有任何数学逻辑可以实现这个?)其次,当我这样做时,我可能无法改变敌人在游戏中的速度,而且会很糟糕
我的第二个想法是计算之间的点(或要跳过的点),这应该发生在每一帧,相对于实际速度。但是在这里我没有足够的数学经验。
那么,这些方法是否可行,如果是,有人知道如何计算吗?而且,如果没有,我还有什么其他的可能性来实现这一目标?
谢谢,抱歉英语不好!