![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2010
Сообщений: 24
|
Такой вопрос.
Как в box2d сделать фильтрацию столкновений? т.е. чтоб тело "А" проходило сквозь тело "Б", но отскакивало от тела "С". Спасибо. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Нужно телам, которые должны сталкиваться задать одну и ту же группу фильтрации и исключить фильтруемые биты, т.е:
var filter:b2FilterData = new b2FilterData(); filter.groupIndex = 4; filter.maskBits = ~0x0001; _body.GetFixtureList().SetFilterData(filter); Надеюсь понятно объяснил ) |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 24
|
Вроде понятно))
Однако дело в том, что тела одной группы ("враги") не должны сталкиваться между собой, но должны сталкиваться с телами другой группы, т.е. с персонажем игры. Тут мне кажется надо как-то по другому... Некорректно обрисовал проблему сначала. Сорри) Добавлено через 14 минут нашел вот чё playerShapeDef.filter.categoryBits = 0x0002; monsterShapeDef.filter.categoryBits = 0x0004; playerShapeDef.filter.maskBits = 0x0004; monsterShapeDef.filter.maskBits = 0x0002; Вот ещё нашёл такой класс, как b2ContactFilter. Буду разбираться. Суть вроде та же, но выглядит по-проще. |
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Цитата:
Можно врагам назначить categoryBits, например 0x0004, своим персонажам сделать categoryBits = 0x0003 а потом своим персонажам замаскировать эту категорию бит, например так: var filter:b2FilterData = new b2FilterData(); filter.categoryBits = 0x0003; // назначили такую категорию filter.maskBits = ~0x0003; // и тут же ее замаскировали _body.GetFixtureList().SetFilterData(filter); Для врагов можно сделать то же самое, но с другой категорией. Чтобы к маскировке добавить что-то еще, можно сделать это так: Последний раз редактировалось goodguy; 07.11.2011 в 08:37. |
|
|||||
|
Регистрация: Nov 2010
Сообщений: 24
|
да не) правда понятно)
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:19. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|