ImageView - 碰撞检测

时间:2017-02-09 19:58:56

标签: android

我想检查两个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;
            }

也许它不起作用是因为:如果我直接在星上下来,我的身影中没有一个角落在星星内部。所以我需要检查两侧是否发生碰撞。

感谢您的帮助! :)

0 个答案:

没有答案