Удаление SKNodes в SpriteKit (Swift3)

Я делаю игру, похожую на Flappy Bird. Когда мой герой сталкивается с монетами, случайным образом появляющимися на экране, я хочу, чтобы монеты были удалены с экрана. Я пробовал кучу разных вещей, которые я читал, но пока ничего не сработало. Я знаю, что "coins.removeFromParent()" - это, вероятно, правильный путь. И, вероятно, его следует поместить в «didBegin (_ contact: SKPhysicsContact {», но отсюда я не решил проблему.

  • Мне нужны оба кода на изображениях ниже, или я могу объединить их в один? Может ли это быть проблемой?

изображение

изображение


person Flinigan    schedule 27.03.2017    source источник
comment
Кто-нибудь знает, как это исправить?   -  person Flinigan    schedule 29.03.2017


Ответы (1)


Вы правы в том, что его нужно поместить в «didBegin(_ contact: SKPhysicsContact {» и .removeFromParent() также правильно. Недостающий элемент заключается в том, что вам нужно сначала использовать контактную переменную в функции didBegin для идентификации узла которые вы хотите удалить.

Я предполагаю, что код, который вы хотите, будет примерно таким. (Это должно быть внутри вашей функции didBegin.)

if contact.bodyA.categoryBitMask == ColliderType.coins.rawValue {

        print("body A is the coin")

        contact.bodyA.node!.removeFromParent()

      } else if contact.bodyB.categoryBitMask == ColliderType.coins.rawValue {

        print("body B is the coin")

        contact.bodyB.node!.removeFromParent()

      }
person future_guy    schedule 11.06.2017