Как обеспечить фиксациюA

Я был сбит с толку при использовании contactlistener из box2d. Теперь у меня есть body1 и body2. Когда 2 тела имели контакт, как я могу убедиться, что телом приспособленияA является тело1 или тело2? Или как я могу выяснить, какое тело принадлежит приспособлениюA?

Я провел эксперимент и удостоверился, что тело приспособления A не является случайным. Это все, что я могу сейчас гарантировать.

Хорошо. Может быть, я должен спросить по-другому. Теперь я могу понять, что тело приспособленияA - это тело1, и каждый раз это может быть тело1. Но почему? Почему не тело2? (тело1 и тело2 - это просто имена, как это. Нет последовательности.)


person ManuQiao    schedule 12.03.2012    source источник


Ответы (1)


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

Чтобы проверить, с чем вы имеете дело в обратном вызове прослушивателя контактов, вам нужно либо сохранить указатель на фикстуру/тело, когда вы создаете его для сравнения, либо установить пользовательские данные в фикстуре/теле для проверки. Вы также можете выполнить другие проверки, например проверить, какую форму имеет приспособление или к какому типу тела оно принадлежит... все, что вам нужно знать о приспособлении, чтобы выяснить, что с ним делать, зависит от ваша игра.

person iforce2d    schedule 12.03.2012
comment
Большое спасибо. Может быть, мне следует каждый раз проверять данные пользователя. - person ManuQiao; 15.03.2012