В iOS-игре, которая использует Sprite Kit вместе с обнаружением контакта в встроенном физическом движке Sprite Kit, я уменьшаю число героев на каждый раз, когда он вступает в контакт с противником. Это делается с помощью метода didBeginContact
.
Однако кажется, что этот метод называется не раз один раз, когда контакт начинается, но называется непрерывно, пока Герой и противник перекрываются: когда я устанавливаю точку останова в этом методе, я вижу, что это то же самое экземпляры физического тела, которые существуют как contact.bodyA
и contact.bodyB
. В результате Герой потеряет несколько жизней, хотя он пропускает только одного врага.
Если герой снова встретится с тем же врагом, он должен получить еще одну вычитаемую живую, поэтому я не могу просто поддерживать хэш-код seenEnemies
для решения проблемы выше.
Вопрос теперь: как бы вы удостоверились, что для каждого контакта героя/врага вычитается только один живой?