如何为屏幕上的每个精灵添加rect。 cocos2d android

时间:2014-03-15 12:31:36

标签: android sprite cocos2d-android rect

我正在制作一款汽车在屏幕上移动的游戏。汽车从屏幕的四个侧面生成,移动到屏幕的另一侧。

当我触摸汽车时,汽车应该以另一种速度移动。我实现了一切,但我被困在了矩阵中。在触摸上。

我将每辆生成的汽车都放在一个阵列中,然后给每辆汽车一个标签值。

这就是我的CCtouchbegan()

for (CCSprite targetL1 : _targetsL1)
    {

        System.out.println("tag is targetL1 "+ targetL1.getTag());

        if(targetL1.getTag()==1 ||targetL1.getTag()==3||targetL1.getTag()==4)
        {

            targetL1Rect = CGRect.make(targetL1.getPosition().x - ((winSize.width/8.0f)/ 2.0f),
                     targetL1.getPosition().y - ((winSize.height/10.0f) / 2.0f),
                     (winSize.width/8.0f),
                     (winSize.height/10.0f));


        }else if(targetL1.getTag()==2 ){

         targetL1Rect = CGRect.make(targetL1.getPosition().x - ((winSize.width/4.0f) / 2.0f),
                 targetL1.getPosition().y - ((winSize.height/10.0f) / 2.0f),
                 (winSize.width/4.0f),
                 (winSize.height/10.0f));

        }


        for (CCSprite targetL2 : _targetsL2)
        {


             if(targetL2.getTag()==5 ||targetL2.getTag()==7||targetL2.getTag()==8)
                {

                 targetL2Rect = CGRect.make(targetL2.getPosition().x - ((winSize.width/8.0f)/ 2.0f),
                         targetL2.getPosition().y - ((winSize.height/10.0f) / 2.0f),
                         (winSize.width/8.0f),
                         (winSize.height/10.0f));

                }else if(targetL2.getTag()==6 ){

                     targetL2Rect = CGRect.make(targetL2.getPosition().x - ((winSize.width/4.0f) / 2.0f),
                             targetL2.getPosition().y - ((winSize.height/10.0f) / 2.0f),
                             (winSize.width/4.0f),
                             (winSize.height/10.0f));

                }


             for (CCSprite targetR1 : _targetsR1)
             {

                 if(targetR1.getTag()==9 ||targetR1.getTag()==11||targetR1.getTag()==12)
                    {

                     targetR1Rect = CGRect.make(targetR1.getPosition().x - ((winSize.width/16.0f)/ 2.0f),
                             targetR1.getPosition().y - ((winSize.height/5.0f)/2.0f),
                             (winSize.width/16.0f),
                             (winSize.height/5.0f));


                    }else if(targetR1.getTag()==10 ){

                        targetR1Rect = CGRect.make(targetR1.getPosition().x - ((winSize.width/15.0f)/2.0f),
                                 targetR1.getPosition().y - ((winSize.height/2.5f)/2.0f),
                                 (winSize.width/15.0f),
                                 (winSize.height/2.5f));

                    }



                 for (CCSprite targetR2 : _targetsR2)
                 {



                     if(targetR2.getTag()==13 ||targetR2.getTag()==15||targetR2.getTag()==16)
                        {

                         targetR2Rect = CGRect.make(targetR2.getPosition().x - ((winSize.width/16.0f)/ 2.0f),
                                 targetR2.getPosition().y - ((winSize.height/5.0f)/2.0f),
                                 (winSize.width/16.0f),
                                 (winSize.height/5.0f));



                        }else if(targetR2.getTag()==14 ){

                             targetR2Rect = CGRect.make(targetR2.getPosition().x - ((winSize.width/15.0f)/2.0f),
                                     targetR2.getPosition().y - ((winSize.height/2.5f)/2.0f),
                                     (winSize.width/15.0f),
                                     (winSize.height/2.5f));



                        }




                       if (CGRect.intersects(targetL1Rect, targetL2Rect))
                       {

                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));

                       }
                       if (CGRect.intersects(targetL1Rect, targetR1Rect))
                       {

                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));

                       }
                       if (CGRect.intersects(targetL1Rect, targetR2Rect))
                       {

                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));

                       }
                       if (CGRect.intersects(targetL2Rect, targetR1Rect))
                       {


                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
                       }
                       if (CGRect.intersects(targetL2Rect, targetR2Rect))
                       {

                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
                       }
                       if (CGRect.intersects(targetR1Rect, targetR2Rect))
                       {

                           CCDirector.sharedDirector().replaceScene(GameOverLayer.scene("you lose"));
                       }

                           // write game over   here

                 }

             }

        }

    }


}
当我触摸汽车时,它会工作一段时间,有时它不起作用。有时当同一侧有两辆车时,他们都会一触即发。

我没有得到关于如何管理汽车触摸检测的想法。

请帮帮我。

0 个答案:

没有答案