让敌人以相同的速度行驶



我开始在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移动我的鼠标。但这也不可能,因为我必须绘制复杂的路径,而这些途径在后面没有任何可见的数学。

所以,我希望让这个敌人以相同的速度在这条路径上移动。我的问题:我不知道在哪里实施"修复"。我有2个想法:

  • 也许我可以在路径创建中工作:不仅可以将要点添加到路径2D中,也许我可以在我快速移动到快速的点之间计算点,或者删除彼此接近的点。但是:首先,我不知道该如何计算(是否有任何数学逻辑可以实现这一目标?),其次,当我这样做时,我可能无法更改Enemys的速度,并且会很糟糕

  • 我拥有的第二个想法是计算(ODER跳过点)之间的点,这应该相对于实际速度进行每个帧。但是我在数学上的经验不足。

那么,这是可能的,如果是,有人想知道如何计算这个问题?而且,如果没有,我还必须实现哪些其他可能性?

谢谢您,对不起,英语不好!

您需要做的就是定义敌人阶级内敌人的运动速度。

当它解决下一个要移动的点时,然后通过从新位置减去当前位置来创建方向向量。

标准化方向向量(因此是长度1),然后将其乘以速度和TPF(每帧时间)。

乘以那个数量而不是跳到下一个点。

(请注意,如果这些点非常近或帧率很低,则可能会导致它过冲一点,虽然可以很好)。

最新更新