私はSwiftを学び始めたばかりです。ゲームプロジェクトを作成して、テンプレートが出てきました。私はコードに対して何もしていません。プロジェクトを実行しようとしましたが、コンパイラエラーがポップアップしました。
チュートリアルを終了するので、私の環境に問題があるか、本がすでに古くなっている可能性があります。
Swiftコンパイラエラー: 'Double'はCGFloatに変換できません
_import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */
let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 65;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));
self.addChild(myLabel)
}
override func mouseDown(theEvent: NSEvent) {
/* Called when a mouse click occurs */
let location = theEvent.locationInNode(self)
let Sprite = SKSpriteNode(imageNamed:"Spaceship")
Sprite.position = location;
Sprite.setScale(0.5)
let action = SKAction.rotateByAngle(M_PI, duration:1)
Sprite.runAction(SKAction.repeatActionForever(action))
self.addChild(Sprite)
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
_
エラーはlet action = SKAction.rotateByAngle(M_PI, duration:1)
で発生します
これはプロジェクト設定のスクリーンショットです
CGFloat(M_PI)
で変換できます。
たとえば、次のコードはあなたのケースで機能するはずです(CGFloat
の使用に注意してください)
let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1)
コードで次のようにpiを宣言できます:let π = CGFloat(M_PI)
そして、let action = SKAction.rotateByAngle(π, duration:1)
あなたがπをたくさん使うつもりなら、それはずっと簡単です。
ショートカットalt + pでπを入力できます