使用Swift旋转精灵

时间:2015-09-04 23:01:24

标签: swift sprite-kit

我试图通过让我们说90度来旋转精灵。我该如何编码呢?我试过这个

let rotate = [SKAction .rotateByAngle(M_PI_4, duration: 0)]

但这给了我一个错误.M

2 个答案:

答案 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)

    }


}