我们正在尝试检测正在屏幕上移动的图像视图上的碰撞。问题是当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,则执行任何操作 那么我们如何将这种逻辑转化为代码呢? 我们看了很多帖子,但他们都处理了所有检测
答案 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
}