расширить область testPoint в cocos2d при обнаружении касания - PullRequest
0 голосов
/ 23 декабря 2011

В моей игре много спрайтов, у которых есть тела в мире b2. и чтобы обнаружить прикосновение, я делаю следующее:

currentPosition = [[CCDirector sharedDirector] convertToGL: currentPosition];    
    b2Vec2 locationWorld = b2Vec2(currentPosition.x/PTM_RATIO, currentPosition.y/PTM_RATIO);

    for (b2Body* b = world->GetBodyList(); b; b = b->GetNext()) 
    {
        b2Fixture *bf1 = b->GetFixtureList();
        if (bf1->TestPoint(locationWorld) )
        {
            CCSprite *tempSprite = (CCSprite *) b->GetUserData();
            if (tempSprite.tag==2    ) 
            {

Теперь, поскольку тело моего спрайта слишком маленькое, и он движется, очень трудно дотронуться до него во время движения, поэтому мне нужно изменить этот код, чтобы обнаружить широкую область вокруг этого спрайта тоже. Как расширить тестовую точку, чтобы она была + - больше 50 пикселей ??

спасибо большое.

1 Ответ

0 голосов
/ 23 декабря 2011

Вы можете прикрепить прибор к корпусу большего размера и установить флаг датчика прибора на true. Приспособление датчика не изменит никакой физики, но вы можете проверить, попадает ли точка в его границы.

Вы можете создать сенсорное приспособление следующим образом (из SensorTest.h):

b2CircleShape shape;
shape.m_radius = 5.0f;
shape.m_p.Set(0.0f, 10.0f);

b2FixtureDef fd;
fd.shape = &shape;
fd.isSensor = true;
body->CreateFixture(&fd);

См. Руководство по Box2D, раздел 6.3 ( PDF ) и файл SensorTest.h, входящий в состав испытательного стенда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...