gpt4 book ai didi

java - "Simple"矩形碰撞检测 : Why doesn't my code work?

转载 作者:太空狗 更新时间:2023-10-29 15:33:02 24 4
gpt4 key购买 nike

大家好,请看一下我的代码,看看这里有什么问题。我查看了文档和所有内容,这似乎应该可行。

public Boolean CollisionTest (Rect one, Rect two) {
if (one.intersect(two)) {
collided = true;
} else {
collided = false;
}
return(collided);
}

如果两个矩形发生碰撞,这不应该返回吗?我怀疑这一点的原因是我的主线程中有一些空指针异常(它停止在我的游戏循环线程的 finally 语句上)调试时出错,当我不使用这个函数时它很好。

非常奇怪,如果有人可以发布指向有用的碰撞检测教程的链接,我将不胜感激。我想处理自己的碰撞检测,而不是使用外部库。

谢谢大家!

最佳答案

根据 intersect 函数的 Android 开发者文档:

If the specified rectangle intersects this rectangle, return true and set this rectangle to that intersection, otherwise return false and do not change this rectangle.

我强调的部分意味着如果矩形确实相交,您的 one 参数可能会被更改——我猜这是它如何以某种方式设置为 null,并在稍后的游戏循环中导致您的错误。

文档还指出:

To just test for intersection, use intersects().

Rect.intersects(Rect a, Rect b) 方法的描述是 available here .

如果我们修改您的方法以使用 Rect.intersects,它看起来像这样:

public Boolean CollisionTest (Rect one, Rect two) {
return Rect.intersects(one, two);
}

此时您可能完全摆脱 CollisionTest 并直接调用 Rect.intersects —— 除非在某些时候您想要实现自己的碰撞检测。在那种情况下,您只需要修改这一个方法。这完全取决于您。

关于java - "Simple"矩形碰撞检测 : Why doesn't my code work?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706463/

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