【发布时间】: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