为什么在我的Java游戏中,我的SmartEnemy没有跟着玩家走,而是走到了屏幕上方?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么在我的Java游戏中,我的SmartEnemy没有跟着玩家走,而是走到了屏幕上方?相关的知识,希望对你有一定的参考价值。

我正在按照YouTube上RealTutsGML的系列教程 "Java编程。RealTutsGML在YouTube上发布的 "让我们来构建一个游戏 "系列教程。我做了这个名为SmartEnemy的类,其对象应该是跟着玩家走的。然而,当我运行游戏,SmartEnemy出现时,大部分时间它都会移动到屏幕顶部,然后就停留在那里。我试着在网上搜索答案,并使用视频评论中的建议,但没有任何效果。有谁知道我可能做错了什么?以下是SmartEnemy中使其跟随玩家的代码。

public void tick() {
        x += velX;
        y += velY;

        float diffX = x - player.getX() - 16; 
        float diffY = x - player.getY() - 16;

        float distance = (float) Math.hypot((double)(x - player.getX()), (double)(y - player.getY()));

        velX = (float) ((-1.0/distance) * diffX); 
        velY = (float) ((-1.0/distance) * diffY);

        if(y <= 0 || y >= Game.HEIGHT - 32) velY *= -1; 
        if(x <= 0 || x >= Game.WIDTH - 16) velX *= -1;

        handler.addObject(new Trail(x, y, ID.Trail, Color.green, 16, 16, 0.02F, handler));
    }
答案

这应该是 yx?

        float diffY = y - player.getY() - 16;

以上是关于为什么在我的Java游戏中,我的SmartEnemy没有跟着玩家走,而是走到了屏幕上方?的主要内容,如果未能解决你的问题,请参考以下文章

在我的 Java 游戏项目中过度使用静态?

Java:允许在我的库存中进行丢弃操作?

为啥在我的 JavaScript 浏览器游戏中弹跳 Actor 不起作用?

为啥 Unity Canvas Image 总是在我的游戏对象上渲染,即使它肯定在它们后面?

如何根据我的paintComponent中的if条件在我的Java GUI中绘制文本?

我可以在我的 AS3 Air 中使用 Z-Push 来玩 Android 游戏吗