像素完美碰撞检测Android

好的,我正在研究Android上的游戏。我需要实现像素完美碰撞检测。我已经在每个图像周围设置了边界框,每个边界框都进行了转换以匹配图像的当前旋转。一切都很好。我还将每个位图的像素数据存储在数组中。有人可以帮我找出检测像素是否重叠的最有效方法吗?在此先感谢您的帮助!

回答:

基本思想是为每个对象创建一个位掩码,您可以在每个像素中指示该对象是否实际存在。然后,比较两个对象的位掩码的每个像素。

您可以通过计算两个边界框重叠的矩形区域来最大程度地减少需要检查的像素数量。您需要检查该区域内的像素。

遍历所有这些像素,并检查两个对象中是否都填充了该像素。如果其中任何一个发生冲突,那么您将发生冲突。

如果矩形与x / y轴对齐,则要查找重叠,请找到重叠的左,右,上和下。看起来像这样(我可能搞砸了边缘盒,没有尝试过):

int left = max(obj1.left, obj2.left)

int right = min(obj1.right, obj2.right)

int top = min(obj1.top, obj2.top)

int bottom = max(obj1.bottom, obj2.bottom)

for (int x = left; x < right; x++) {

for (int y = top; y < bottom; y++) {

if (obj1.isFilled(x,y) && obj2.isFilled(x,y)) {

return true;

}

}

}

以上是 像素完美碰撞检测Android 的全部内容, 来源链接: utcz.com/qa/397247.html

回到顶部