SpriteKit: удаление гравитации из SKSpriteNode не работает - PullRequest
0 голосов
/ 28 сентября 2018

Я пытаюсь удалить гравитацию из SKSpriteNode, но не работает.Вот мой код:

Я добавляю добавить SKSpriteNode:

let block: SKSpriteNode = self.childNode(withName: "block") as! SKSpriteNode

Я добавляю гравитацию через Scene.sks

Я пытался всеми этими способами удалить гравитациюно ничего из сработавшего:

block.physicsBody?.affectedByGravity = false
block.physicsBody?.isDynamic = false
block.physicsBody?.velocity.dy = 0
block.physicsBody?.categoryBitMask = 0

Как мне убрать гравитацию из SKSpriteNode?любой из вас знает

Я буду очень признателен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Используйте ? только в том случае, если вы хотите разрешить ноль / ноль

block.physicsBody!.affectedByGravity = false
block.physicsBody!.isDynamic = false
block.physicsBody!.velocity.dy = 0
block.physicsBody!.categoryBitMask = 0

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

Если это не удастся, вы знаете, что у вашего блока нет физического тела (что означало бы, что вы захватили не тот блок.)

Вопрос, который вам нужно задать себе сейчас, заключается в том, что в вашей сцене существует множество block спрайтов, потому что, каков ваш код, он будет тянуть только первый найденный.

Чтобы отключить всю гравитацию на блочных спрайтах,Вы можете сделать:

enumerateChildNodes(withName:"block")
{
    block,finished in
    block.physicsBody!.isDynamic = false
}

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

0 голосов
/ 30 сентября 2018

Похоже (из приведенного кода), что ваш спрайт является цветным спрайтом в GameScene.sks.Если это так, это легко исправить.

Просто удалите гравитацию из файла GameScene.sks:

Image 1

Image 2

Image 3

Переключить определение физики на ноль или убрать галочку из "Под влиянием силы тяжести"

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

...