我试图通过让我们说90度来旋转精灵。我该如何编码呢?我试过这个
let rotate = [SKAction .rotateByAngle(M_PI_4, duration: 0)]
但这给了我一个错误.M
答案 0 :(得分:1)
M_PI_4
的类型为Double,但该函数采用CGFloat,因此您需要将其强制转换。
let rotate = [SKAction.rotateByAngle(CGFloat(M_PI_4), duration: 0)]
请注意,此时rotate将是单个SKAction的数组。如果那不是你想要的东西,那么删除方括号,你只需要SKAction本身。
CGFloat是大多数UI库中使用的浮点类型。精度取决于平台。一般来说,在32位设备上,它相当于Float,在64位设备上,它相当于Double。
答案 1 :(得分:0)
M_PI_4定义为Double,SKAction.rotateByAngle: duration:取CGFloat作为角度参数。
试试这个:
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let object = SKSpriteNode(color: SKColor.greenColor(), size: CGSize(width: 100.0, height: 100.0))
object.position = CGPoint(x: CGRectGetMidX(frame), y:CGRectGetMidY(frame))
addChild(object)
let rotate = SKAction.rotateByAngle(CGFloat(M_PI_4), duration:0) //You need explicit cast here , M_PI_4 is defined as Double
//First way
object.runAction(rotate)
//Second way
object.zRotation = CGFloat(M_PI_2)
}
}