Nape, арбитры и столкновения
govnoproger.ru > as3 >
Всё написанное имеет отношение к новой версии nape — milestone 5. Это не подойдёт для старых версий.
В новой версии nape нет коллбэков, вернее пока-что нету.
Используются арбитры.
Арбитры бывают:
- COLLISION — Это арбитр столкновений, причём столкновений физических. Два тела при этом сталкиваются.
- FLUID — Это жидкостной арбитр. Нужен для тел в жидкости. Он преставляет наименьший интерес.
- SENSOR — Это арбитр не физических столкновений. Сенсорный. Например когда одно тело проходит насквозь другого, из-за того, что они в разных слоях они не сталкиваются физически.
Вот простой пример.
Представьте себе:
Есть два тела. body1 и body2.
У первого тела на энтерфрейме вызывается:
for(var i = 0; i<body1.arbiters.length; i++) { var arb:Arbiter = body1.arbiters.at(i); if (arb.isCollisionArbiter()) trace("этот код вы увидите если происходит физическое столкновение"); if (isFluidArbiter())trace("этот код вы увидите если происходит жидкостное воздействие"); if (isSensorArbiter()) trace("этот код вы увидите если происходит сенсорное столкновение"); }
Теперь представьте что у второго тела есть шейп some.
Чтобы зарегистрировать физическое столкновение код будет таким:
for(i = 0; i<body1.arbiters.length; i++) { arb = body1.arbiters.at(i) if(arb.CollisionArbiter() &&(arb.shape1==some || arb.shape2==some)) //тк неизвестен порядок шейпов { trace("body1 и body2 сталкиваются физически"); } }
Вот собственно и всё господа.