Проблемы с 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

Другие вопросы по тегам