为什么在我的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));
}
答案
这应该是 y
不 x
?
float diffY = y - player.getY() - 16;
以上是关于为什么在我的Java游戏中,我的SmartEnemy没有跟着玩家走,而是走到了屏幕上方?的主要内容,如果未能解决你的问题,请参考以下文章
为啥在我的 JavaScript 浏览器游戏中弹跳 Actor 不起作用?
为啥 Unity Canvas Image 总是在我的游戏对象上渲染,即使它肯定在它们后面?