- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
大家好,请看一下我的代码,看看这里有什么问题。我查看了文档和所有内容,这似乎应该可行。
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/
我是一名优秀的程序员,十分优秀!