我想检查两个ImageView是否发生碰撞。我的Figur(分辨率:50x50)和我的星(分辨率:30x30)。 figurGR就在那里,因为当我的身影向左或向右移动时,它变得更薄,所以我不得不减去一些像素。
以下是碰撞检查的代码:
if(((Figur.getX() + figurGR > Star.getX() && Figur.getX() + figurGR < Star.getX() + 30) || (Figur.getX() + (50 - figurGR) > Star.getX() && Figur.getX() + (50 - figurGR) < Star.getX() + 30)) && ((Figur.getY() > Star.getY() && Figur.getY() < Star.getY() + 30) ||(Figur.getY() + 50 > Star.getY() && Figur.getY() + 50 < Star.getY() + 30))) {
points++;
placeStar();
Points.setText("Stars: " + points);
}
这就是移动我的图的代码:
@Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
fx = Figur.getX();
fy = Figur.getY();
if (event2.getX() > event1.getX() && Math.abs(event2.getX() - event1.getX()) > Math.abs(event2.getY() - event1.getY())) {
fx = fx + 25;
Figur.setX(fx);
Figur.setBackgroundResource(figure_swipe_r);
figurGR = 10;
} else if (event2.getX() < event1.getX() && Math.abs(event2.getX() - event1.getX()) > Math.abs(event2.getY() - event1.getY())) {
fx = fx - 25;
Figur.setX(fx);
Figur.setBackgroundResource(figure_swipe_l);
figurGR = 10;
} else if (event2.getY() > event1.getY() && Math.abs(event2.getX() - event1.getX()) < Math.abs(event2.getY() - event1.getY())) {
fy = fy + 25;
Figur.setY(fy);
Figur.setBackgroundResource(figure_swipe_u);
figurGR = 0;
} else if (event2.getY() < event1.getY() && Math.abs(event2.getX() - event1.getX()) < Math.abs(event2.getY() - event1.getY())) {
fy = fy - 25;
Figur.setY(fy);
Figur.setBackgroundResource(figure_swipe_h);
figurGR = 0;
}
return true;
}
也许它不起作用是因为:如果我直接在星上下来,我的身影中没有一个角落在星星内部。所以我需要检查两侧是否发生碰撞。
感谢您的帮助! :)