我有一个名为“幽灵”的图像,它在屏幕上移动。我想让SpriteNode不停地转动,而不受压力。
Ghost = SKSpriteNode(imageNamed: "Ghost1")
Ghost.size = CGSize(width: 50, height: 50)
Ghost.position = CGPoint(x: self.frame.width / 2 - Ghost.frame.width, y: self.frame.height / 2)
Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4)
Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost
Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall
Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score
Ghost.physicsBody?.affectedByGravity = false
Ghost.physicsBody?.isDynamic = true
Ghost.zPosition = 2
self.addChild(Ghost)我已经寻找了一些关于堆栈溢出的答案,但是我似乎找不到有同样问题的人,请帮助。
发布于 2016-09-29 21:02:56
你可以施加一种角度型的力,使身体旋转,并关闭阻尼,使它继续永远旋转:
https://developer.apple.com/reference/spritekit/skaction/1417775-applyangularimpulse
或者,施加扭矩:
首先,通过将其设置为true,确保它能够旋转:
https://developer.apple.com/reference/spritekit/skphysicsbody/1519986-allowsrotation
确保没有角阻尼,这样它的旋转速度不会减慢:
https://developer.apple.com/reference/spritekit/skphysicsbody/1519913-angulardamping
现在通过施加扭矩使它旋转:
https://developer.apple.com/reference/spritekit/skphysicsbody/1519588-applytorque
或者,设定一个旋转速率:
https://developer.apple.com/reference/spritekit/skphysicsbody/1519766-angularvelocity
发布于 2016-09-29 20:28:38
若要使SKSpriteNode不断旋转,请将其添加到希望开始旋转的任何位置:
let rotate = SKAction.rotate(byAngle: CGFloat.pi * 2.0, duration: 2)
Ghost.run(SKAction.repeatForever(rotate), withKey: "rotateGhost")若要向相反方向旋转,请将CGFloat.pi更改为-CGFloat.pi
您可以对持续时间进行调整,以更改整个轮换的持续时间。
如果您希望删除该操作,请调用:
removeAction(forKey: "rotateGhost")或者你可以暂停这个动作。
https://stackoverflow.com/questions/39779042
复制相似问题