我正在尝试完成碰撞检测。我没有使用opengl,我使用的是canvas/surfaceview。
我有两个位图。
这就是我到目前为止得出的结论:

public boolean inBounds(int x2,int y2, int x,int y,int width,int height){
    if(x2 > x && x2 < x + width -1 && y2 > y && y2 < y + height -1){
        return true;
    }
     return false;

       }

它确实会运行,但它只在x2和y2的角位于另一个对象内时检测碰撞。
那么我该如何改进碰撞检测呢?
我在网上找到的这张图片应该能在我的程序中检测到冲突。
//西蒙

最佳答案

如果它们是圆,那么这里有一些伪代码给您:

if (Math.sqrt(Math.pow(bitmap1.centerX-bitmap2.centerX, 2) + Math.pow(bitmap1.centerY-bitmap2.centerY, 2))<=bitmap1.width)
    return true;
else
    return false;

既然你现在想要矩形(假设它们的大小不同):
if (Math.abs(bitmap1.centerX-bitmap2.centerX)<=(bitmap1.width+bitmap2.width)/2f
    && Math.abs(bitmap1.centerY-bitmap2.centerY)<=(bitmap1.height+bitmap2.height)/2f)
    return true;
else
    return false;

希望能有帮助!

关于android - Android开发:最简单的碰撞检测?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6945567/

10-10 11:01