SpriteKit:添加另一个物理体时,旋转SKNode会从屏幕上掉下来

时间:2015-04-29 00:51:56

标签: ios swift sprite

以下代码会导致rotateLayer物理机构在几秒钟后从屏幕上掉下来。然而,评论圈子物理主体会在屏幕上保留rotateLayer。是否无法将物理主体添加到节点,然后旋转父节点?从概念上讲,目标是围绕固定点as described here旋转圆,但是将物理主体附加到圆上,同时还通过角速度控制旋转,而不是zRotation。

let size = CGSize(width: 10, height: 250)
rotateLayer = SKNode()
gameLayer.addChild(rotateLayer)

let circleSize = CGSize(width: 10, height: 10)
let circle = SKSpriteNode(color: SKColor.whiteColor(), size: circleSize)
circle.position = CGPoint(x: 0, y: size.height/2 + circleSize.height/2)
circle.physicsBody = SKPhysicsBody(rectangleOfSize: circleSize)
circle.physicsBody?.affectedByGravity = false
circle.physicsBody?.friction = 0
circle.physicsBody?.linearDamping = 0
circle.physicsBody?.angularDamping = 0
circle.physicsBody?.collisionBitMask = 0
circle.physicsBody?.dynamic = false

rotateLayer.addChild(circle)

rotateLayer.physicsBody = SKPhysicsBody(rectangleOfSize: size)
rotateLayer.physicsBody?.affectedByGravity = false
rotateLayer.physicsBody?.friction = 0
rotateLayer.physicsBody?.linearDamping = 0
rotateLayer.physicsBody?.angularDamping = 0
rotateLayer.physicsBody?.angularVelocity = -3.0

1 个答案:

答案 0 :(得分:0)

添加rotateLayer.collisionBitMask = 0解决了问题。不知道为什么。

相关问题