Swift SpriteKit - предотвращение углового вращения спрайтового узла - PullRequest
0 голосов
/ 10 октября 2018

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

Это то, что я пытался при инициализации спрайта:

        let texture = SKTexture(imageNamed:character.image)
        let size = CGSize(width: character.width, height: character.height)
        player = playerNode
        player.name = "player"
        player.physicsBody?.isDynamic = true
        player.physicsBody?.allowsRotation = false
        player.physicsBody?.angularVelocity = 1
        player.texture = texture
        player.position = CGPoint(x:0, y:0)
        player.size = size

        // Physics
        player.physicsBody?.categoryBitMask = BodyType.player.rawValue
        player.physicsBody?.contactTestBitMask = BodyType.dot.rawValue
        player.physicsBody?.collisionBitMask = 0
        player.physicsBody = SKPhysicsBody(texture: texture, size: size)
        player.physicsBody?.linearDamping = 1
        player.physicsBody?.angularDamping = 1

1 Ответ

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

Ваш player на самом деле не имеет физического тела, пока вы не перейдете к этой строке в разделе "физика":

player.physicsBody = SKPhysicsBody(texture: texture, size: size)

, поэтому все эти строки для установки свойствс физическим телом ничего не делаем:

    player.physicsBody?.isDynamic = true
    player.physicsBody?.allowsRotation = false
    player.physicsBody?.angularVelocity = 1

    // Physics
    player.physicsBody?.categoryBitMask = BodyType.player.rawValue
    player.physicsBody?.contactTestBitMask = BodyType.dot.rawValue
    player.physicsBody?.collisionBitMask = 0

Переместите создание физического тела в начало раздела «физика» и все присвоения свойств физического тела после этого.

...