Как я могу определить, что ccsprite находится в желаемой позиции, в то время как много ящиков предназначены для разных ccsprites? - PullRequest
0 голосов
/ 04 июля 2011

У меня есть 6 разных коробок и количество предметов (фруктов и овощей) для конкретной коробки, как и все фрукты будут помещены в поле для чтения, а все овощи будут сброшены в зеленую коробку, поэтому я создал класс (унаследуйте CCSprite)чтобы я мог перемещать объекты, теперь, как я могу обнаружить ящики, пока ящики меняют свое положение?

Ответы [ 2 ]

2 голосов
/ 04 июля 2011
    CCSprite *red=[CCSprite spriteWithFile:@"red.png"];

    red.tag=3;

    [self addChild:red];



    CCSprite *blue=[CCSprite spriteWithFile:@"blue.png"];

    blue.tag=4;

    [self addChild:blue];

тогда, пока вы создаете красное и синее тело, у вас есть

    b2BodyDef bd;

    bd.type=b2_dynamicBody;

    bd.position.Set(w/PTM_RATIO,h/PTM_RATIO);   

    bd.userData=red;

// в вашей функции шага для каждого m_body

    b2Fixture *f=m_body->GetFixtureList();


    b2Vec2 locationWorld = b2Vec2(desiredlocationX/PTM_RATIO, desiredlocationY/PTM_RATIO);

    if (f->TestPoint(locationWorld)) {

            CCSprite *actor = (CCSprite*)m_body->GetUserData();


            if ([actor tag] == 3) {
                 //red box

            }

            else if([actor tag] == 4){
                  //blue box 
            } 
   }
0 голосов
/ 04 июля 2011

Поскольку они представляют собой блоки, вы можете просто создать для них CGRect и просто использовать координаты x и y CGRect для их отслеживания.

Каждый CCSprite имеет свойство boundingBox, которое является его CGRect.См. Эту ветку SO для получения дополнительной информации:

как получить ширину и высоту CCSprite в cocos2d для iphone

...