2015-03-26 4 views
2

В настоящее время я создаю 2D-игру в Swift с помощью SpriteKit, и у меня возникла проблема с обнаружением столкновения.Обнаружение контакта после изменения контактаTestBitMask в SpriteKit

Предположим, у меня есть SKSpriteNode Foo в игре. Тогда скажем, что SKSpriteNode Bar появляется поверх Foo, но не имеет контактаTestBitMask, чтобы вызвать контакт. Затем через короткий промежуток времени (скажем, 1 секунду) Bar меняет свой контактTestBitMask для обнаружения контакта с Foo.

В настоящее время Foo придется немного перемещаться или выходить из-под бара и возвращаться к нему, чтобы обнаружить контакт с ним. Мне нужно, чтобы Bar немедленно вызывал контакт с Foo, когда он меняет контактTestBitMask.

Возможно, есть другой способ сделать это без изменения контактаTestBitMask?

Спасибо!

ответ

1

Если вы создадите объект физического тела, пересекающий другой объект физического тела, никакое столкновение не будет регистрироваться. Это как-то связано с тем, как SK регистрирует столкновение только через движение.

У вас есть возможность использовать intersectsNode: при создании объекта, чтобы увидеть, пересекает ли он другой объект и соответствующим образом обрабатывает любой последующий код.

+0

Мой бог, я все это время забыл об этом методе ... спасибо, что отлично работает. – lespommes

+0

@lespommes - происходит постоянно. – sangony

+0

Эй, сангони, это сработало, если у меня нет SKPhysicsBody, который создан для наброска текстуры и не включает альфу в изображение. Если это так, фактический кадр узла намного больше, чем его физическое тело, поэтому он обнаруживает пересечение, даже если оно не должно (поскольку оно использует фреймы, а не физические тела). Есть идеи? – lespommes

Смежные вопросы