SpriteKit обнаруживает столкновение, не устанавливая для параметра dynamic значение true?

Я хочу, чтобы столкновения и контакты моих спрайтов обнаруживались, но я не хочу, чтобы они двигались динамически (мне просто нужно знать, что они соприкасались).

didBeginContact(contact: SKPhysicsContact!) вызывается только в том случае, если я установил для physicsBody.dynamic своего игрока значение true. Как я могу получить эти вызовы метода делегата, не влияя на положение или движение моего игрока?


person JuJoDi    schedule 15.06.2014    source источник


Ответы (2)


Вы можете закреплять объекты на экране, поэтому вам не нужно устанавливать гравитацию на 0 (если вы хотите сохранить гравитацию для других объектов). Настройте объект следующим образом:

    object.physicsBody.dynamic = true
    object.physicsBody.affectedByGravity = false
    object.physicsBody.pinned = true

С этой настройкой ваш объект может сталкиваться с другими объектами, не двигаясь.

person Mike_NotGuilty    schedule 25.08.2014

physicsBodys следуют физическому миру, созданному моей сценой. Когда они сталкиваются, они взаимодействуют с физическим миром, который имеет гравитацию по умолчанию, которая тянет их вниз.

Чтобы исправить эту проблему, в методе init моей сцены я установил

self.physicsWorld.gravity = CGVectorMake(0, 0)

Dynamic по-прежнему должен быть установлен в true, потому что я хочу, чтобы физические тела взаимодействовали с физическим миром, но я не хочу, чтобы физический мир влиял на них, так что это разрешение.

person JuJoDi    schedule 15.06.2014