带边界

时间:2018-02-12 21:07:48

标签: android collision-detection

我们正在尝试检测正在屏幕上移动的图像视图上的碰撞。问题是当brickRect的底部或左侧与ballRect的顶部或右侧碰撞时,我们只想要一个负面反应。如果ballRect想要降落在brickRect的顶部,则不需要负面反应。我们的问题是如何为ballRect与brickRect的这三个交互编写if语句?我们了解如何获取顶部的左下角和左侧值我们将发布该代码,不确定它是否会添加到问题

        Rect brickRect = new Rect();
    brickFOUR.getHitRect(brickRect);

    int BRICKbottom = brickRect.bottom;
    int BRICKtop = brickRect.top;
    int BRICKleft = brickRect.left;
    int BRICKright = brickRect.right;

这里的目标是让ballRect跳起并落在brickRect上 如果ballRect跳跃并击中brickRect的底部,那就做任何事情 如果ballRect.right拦截了brickRect.left,则执行任何操作 那么我们如何将这种逻辑转化为代码呢? 我们看了很多帖子,但他们都处理了所有检测

1 个答案:

答案 0 :(得分:0)

假设您有一对位置或Rect模型,对于球的前后移动以及位置增加到顶部和右侧,那么您可以按如下方式编写代码:

Rect ballBefore = ...
Rect ballAfter = ...
Rect brickRect = new Rect();
brickFOUR.getHitRect(brickRect);

if(ballBefore.top > ballAfter.top
    && ballBefore.top < brickRect.bottom
    && ballAfter.top >= brickRect.bottom) {
    //movement in top direction
    //and position before is below
    //and position after is not
}
if(ballBefore.right > ballAfter.right
    && ballBefore.right < brickRect.left
    && ballAfter.right >= brickRect.left) {
   //if movement is in right direction
   //and position before is left
   //and position after is not
}