Проблемы с UICollisionBehavior
Я не уверен, что я просто нашел несколько ошибок в UICollisionBehavior
или если я просто не реализую это правильно.
У меня есть две основные проблемы.
1) Периодически я создаю UICollisionBehavior
с двумя предметами, игроком и новым предметом, который либо падает сверху, либо отталкивается вверх от нижней части экрана.
Время от времени, однако, два предмета (которые не являются игроком) будут сталкиваться друг с другом. Но когда я регистрирую столкновения в аниматоре, у всех них есть только два предмета: игрок и падающий / восходящий предмет.
Согласно UICollisionBehavior
Класс Ссылка на столкновение:
Вы можете добавить несколько вариантов столкновения в динамический аниматор. Динамический элемент может быть частью любого количества поведений столкновений, при условии, что эти поведения принадлежат одному и тому же аниматору. Например, вы можете указать поведение столкновения для набора, скажем, синего, предметов и другого для, скажем, розовых предметов. Когда вы добавляете оба поведения в динамический аниматор, синие предметы могут сталкиваться друг с другом, а розовые предметы могут сталкиваться друг с другом, но синий и розовый предметы не сталкиваются - они игнорируют друг друга.
Используя приведенный выше пример, мои розовые и синие предметы сталкиваются, несмотря на то, что они не находятся в одном и том же поведении столкновения.
2) Мой игрок сталкивается с UIPushBehavior
когда по экрану нажимают, но время от времени столкновения между игроком и предметом (падающий / восходящий) не улавливаются.
Я не знаю, связаны ли вышеуказанные проблемы, поэтому я поставил их в тот же вопрос на данный момент.
Кто-нибудь знает, что это может быть? Кто-нибудь нашел это как ошибку?
Спасибо как всегда.
1 ответ
UICollisionBehavior
имеет UICollisionBehaviorMode
typedef NS_OPTIONS(NSUInteger, UICollisionBehaviorMode) {
UICollisionBehaviorModeItems = 1 << 0,
UICollisionBehaviorModeBoundaries = 1 << 1,
UICollisionBehaviorModeEverything = NSUIntegerMax
} NS_ENUM_AVAILABLE_IOS(7_0);
по умолчанию UICollisionBehaviorModeEverything
поэтому предметы будут сталкиваться с границами и с другими предметами. Вам нужно установить это свойство UICollisionBehaviorModeBoundaries