【问题标题】:Rectangle Physics Body Causing angular changes矩形物理体引起角度变化
【发布时间】:2017-06-12 23:29:38
【问题描述】:

我有一个矩形精灵,它构成了我的屏幕边框。我也有较小的移动矩形精灵在水平直线上移动。

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

我的代码如下(攻击船是旋转错误的那艘):

    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)
}

【问题讨论】:

  • 我有点困惑,到底是什么问题?船应该旋转,但没有?如果是这样,它应该什么时候旋转,是什么导致它旋转?
  • @FluidityenemyShip 精灵根本不应该旋转,但由于某种原因,它在与边界发生几次碰撞后会旋转。
  • 嘿,我的回答对你有用吗?如果没有,我可以尝试为您更新。

标签: swift sprite-kit skphysicsbody


【解决方案1】:

你试过了吗?

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

【讨论】:

    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多