контактный слушатель, кто кого трогает? - PullRequest
0 голосов
/ 24 января 2012

Я всегда использую контактный слушатель таким образом:

b2Body *bodyA=contact.fixtureA->GetBody();
b2Body *bodyB=contact.fixtureB->GetBody();
.
.
CCSprite *actora = (CCSprite*)bodyA->GetUserData(); 
CCSprite *actorb = (CCSprite*)bodyB->GetUserData();
.
.
if ([actora tag] == 6  &&  ( [actorb tag]== 4 || [actorb tag]== 5 )  ) // question !!
//do stuff here

Теперь я нахожу себя всегда пытающимся угадать, кто является актором, а кто b.скажем, что какое-то тело летит и ударило другое тело.иногда тело hitten - это a, а другое - b и наоборот.

Я не хочу проверять все условия и хочу знать, что алгоритм знает, что это.я думал, что первое тело на экране получает a (первый определенный спрайт).это было правильно, пока я не нашел это неправильно:)

так, как бы я узнал, кто такой?(это случайно ??)

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

1 Ответ

1 голос
/ 24 января 2012

См. Все body в space связаны через связанный список, и вы должны пройти список, чтобы получить требуемый элемент, это не похоже на array, через который мы можем выбрать любой элемент без перемещения по списку.

Итак, в нашем случае это связанный список, и нам нужно пройти через путь ссылки, и мы не знаем, какое тело мы получим первыми, поэтому мы должны изучить оба условия. Другого способа найти это нет.

Так выглядит случайным образом :-)

Это все связанный список.

Спасибо

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