gpt4 book ai didi

java - Java ufo 游戏中的碰撞检测

转载 作者:行者123 更新时间:2023-12-02 00:13:25 26 4
gpt4 key购买 nike

我有一个简单的 Java 游戏,您可以向移动的目标发射子弹。两个对象都是 GRect。我有碰撞检测来检查不明飞行物和子弹何时相交,但奇怪的是:

这有效:

private void collideWithUFO() { 
if (bullet != null) {
GObject collObj = getElementAt(ufo.getX(), ufo.getY());
if (collObj == bullet) {
remove(ufo);
remove(bullet);
ufo = null;
bullet = null;
}
}
}

..但是如果我将 getElementAt 更改为如下所示的项目符号,并检查 ufo,它无法检测到碰撞:

private void collideWithUFO() { 
if (bullet != null) {
GObject collObj = getElementAt(bullet.getX(), bullet.getY());
if (collObj == ufo) {
remove(ufo);
remove(bullet);
ufo = null;
bullet = null;
}
}
}

我先选择ufo还是bullet应该无关紧要,但显然不是。现在有一些更奇怪的事情。如果我将项目符号从 GRect 更改为 GOval,突然第二种形式的碰撞检测就起作用了。我是一名 Java 菜鸟,所以请让我知道这种行为是否有意义。

最佳答案

public GObject getElementAt(double x, double y)

Returns the topmost graphical object that contains the point (x, y), or null if no such object exists.

因此,如果 ufo 是最上面的图形元素,则 getElementAt(bullet.getX(),bullet.getY()) 只会为您提供 ufo,否则您将获得子弹。

关于java - Java ufo 游戏中的碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335196/

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