swift - 矩形物理体引起角度变化

标签 swift sprite-kit skphysicsbody

我有一个矩形 Sprite 构成我的屏幕边框。我还有较小的移动矩形 Sprite ,它们以直线、水平线移动。

即使它们在移动(因为矩形物理体), Sprite 也不应该旋转。出于某种原因,敌舰 Sprite 在击中边界 Sprite 几次后开始旋转。

我下面的代码(攻击船旋转不正确):

    self.anchorPoint = CGPoint.init(x: 0.5, y: 0.5)
    setUpHeaderUI()
    self.physicsWorld.gravity = CGVector.zero
    self.physicsWorld.contactDelegate = self
    createBG()
    addShip()

    self.physicsBody = SKPhysicsBody.init(edgeLoopFrom: self.frame)
    self.physicsBody?.collisionBitMask = shipCategory | enemyShipCategory
    self.physicsBody?.categoryBitMask = wallCategory
    self.physicsBody?.friction = 0

func addAttackShip(){
    //30,40,40
    let enemy = attackShip.init()
    enemy.setScale(0.08)
    enemy.zRotation = CGFloat(0)
    enemy.physicsBody = SKPhysicsBody.init(rectangleOf: enemy.size)
    enemy.physicsBody?.isDynamic = true
    enemy.name = "enemy"
    enemy.zPosition = 2
    enemy.physicsBody?.mass = CGFloat.init(10)
    enemy.physicsBody?.friction = 0
    enemy.physicsBody?.categoryBitMask = enemyShipCategory
    enemy.physicsBody?.collisionBitMask = enemyShipCategory | wallCategory
    enemy.physicsBody?.contactTestBitMask = greenBulletCategory | shipCategory
    enemy.position = CGPoint.init(x: 0, y: 155.504 - enemy.size.height / 2)
    enemy.zRotation = CGFloat(2.4870942)

   let healthindicator = SKSpriteNode.init(color: UIColor.green, size: CGSize.init(width: 150, height: 30))
    healthindicator.name = "healthdisplay"
    healthindicator.zPosition = 3
    healthindicator.zRotation = -1 * CGFloat(2.4870942)
    enemy.addChild(healthindicator)
    addChild(enemy)
}

最佳答案

你试过吗?

let enemy = SKSpriteNode()
enemy.physicsBody!.allowsRotation = false
// Put the correct value in the skrange:
enemy.constraints =  [SKConstraint.zRotation(SKRange(constantValue: 0)]

关于swift - 矩形物理体引起角度变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44510155/

相关文章:

swift - 如何在 spritekit 中获取 PhysicsBody SKNode 的方向

swift - SpriteKit 中的掩蔽和物理

ios - 在 Swift 中比较 2 个字符串失败

swift - SpriteKit 构建绳索功能不起作用

ios - 如何在 firebase 的节点中添加子节点

ios - 使用 Sprite Kit 创建自定义 slider - 如何传递 @selector?

ios - 在 SpriteKit 场景背景周围夹紧相机

ios - 为什么 SKSpriteNode 子类在没有编码的情况下工作(带有 :)

ios - Facebook 登录 Swift 项目

ios - UIViewController 子类不识别 UITapGesture