我正在处理一些动画视图的碰撞检测,我正在设置一些alpha图像视图。发生的事情是碰撞检测被触发,即使第二个物体在ImageView的透明部分上时,它显然没有触及它,但ImageView容器是超出图像边界的矩形框。
如何检测它何时接触到图像的绘制部分或使容器成三角形?
以下是我如何检测两个视图之间的冲突:
public boolean checkCollision(View v1, View v2) {
if (v1 == null || v2 == null) {
log.e("Views must not be null");
throw new IllegalArgumentException("Views mut be not null");
}
Rect R1 = new Rect();
v1.getHitRect(R1);
Rect R2 = new Rect();
v2.getHitRect(R2);
return Rect.intersects(R1, R2);
}
答案 0 :(得分:0)
我建议做的是初步检查边界框,看看是否需要执行更准确的检查。如果您只有少量对象发生碰撞,则此步骤是可选的,但如果您有很多对象,则会节省大量性能。 如果您确实需要进一步检查,请在图像周围创建一个您知道有坚实纹理的点,然后检查与这些点的碰撞。如果您愿意,我可以尝试为您提供一些代码,但请在此处查看此问题,以深入解释问题。 https://gamedev.stackexchange.com/questions/30866/collision-detection-with-non-rectangular-images