gpt4 book ai didi

java - 让一个敌人以同样的速度走一条路

转载 作者:行者123 更新时间:2023-11-30 06:20:50 25 4
gpt4 key购买 nike

我开始用 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 之外,也许我可以计算我快速移动的点之间的点,或者删除彼此靠近的点。但是:首先,我不知道如何计算这个,(有什么数学逻辑可以实现这个吗?)其次,当我这样做时,我可能无法改变敌人在游戏中的速度,而且会很糟糕

  • 我的第二个想法是计算之间的点(或者要跳过的点),这应该相对于实际速度在每一帧发生。但我在数学方面经验不足。

那么,这些方法是否可行?如果可行,有人知道如何计算吗?而且,如果没有,我还有哪些其他可能性可以实现这一目标?

谢谢,抱歉英语不好!

最佳答案

您需要做的就是在敌人类中定义敌人的移动速度。

当计算出下一个要移动的点时,通过从新位置减去当前位置来创建方向 vector 。

归一化方向 vector (因此它的长度为 1),然后将其乘以速度和 tpf(每帧时间)。

移动那个量而不是跳到下一个点。

(请注意,如果点靠得很近或帧率较低,这可能会导致它有点过冲,但应该没问题)。

关于java - 让一个敌人以同样的速度走一条路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21257037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com