2016-02-11 32 views
1

我正在处理一些动画视图的碰撞检测,我正在为一些alpha图像视图设置动画。即使当第二个对象位于ImageView的透明部分上时,碰撞检测也会触发,但它看起来没有触及它,但ImageView容器是超出图像边界的矩形框。如何使Android视图的形状不是矩形

如何检测它何时触及图像的绘制部分或使容器变成三角形?

这里的IM如何检测两种观点之间的碰撞:

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); 
} 
+1

为什么你需要这种碰撞检测?如果这是关于游戏逻辑或类似的,还有其他更合适的方法来实现这一点,例如OpenGL或游戏框架。 – marktani

+1

@mcwise是的是关于一个基本的游戏,但唯一的约束是没有任何框架,使其尽可能轻量级。你知道任何第三方库可以帮助我实现吗? –

回答

0

我建议做是做的边框初步核实,只是为了看看,如果你需要进行更准确的检查。如果只有少量物体发生碰撞,则此步骤是可选的,但如果您拥有很多物体,则会节省大量性能。 如果您确实需要进行进一步检查,请在图像上标出确实存在坚实纹理的图像,然后检查与这些点的碰撞。如果你愿意的话,我可以试着让你得到一些代码,但是请查看这个问题来深入解释事情。 https://gamedev.stackexchange.com/questions/30866/collision-detection-with-non-rectangular-images

相关问题