クラスを外して直接コードを書くとしっかり動くのですが以下のようにクラスにして書くと何も表示されません。クラスの使い方が間違っているっぽいのですが原因不明です。教えてください。
import SpriteKit class GameScene: SKScene{ let playerBTN = SKSpriteNode(imageNamed: "playerBTN") let player = playerClass() override func didMove(to view: SKView) { createplayerBTN() } func createplayerBTN() { playerBTN.size = CGSize(width: self.frame.height/15, height: self.frame.height/15) playerBTN.position = CGPoint(x: self.frame.width/5, y: self.frame.height/2) self.addChild(playerBTN) } override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){ for touch in touches { let location = touch.location(in: self) if playerBTN.contains(location){ player.createplayerMovement() } } } } class playerClass: GameScene{ var Level = 1 var HP = 10 var AP = 10 func createplayerMovement (){ var playerAtlas = [SKTexture]() let playerStart = SKSpriteNode(imageNamed: "playerAtlas[0]") for i in 0..<9 { let playerimage = SKTexture(imageNamed: "playerImg\(i)") playerAtlas.append(playerimage) } playerStart.size = CGSize(width: self.frame.width/7, height: self.frame.height/15) playerStart.position = CGPoint(x: self.frame.width/2, y: self.frame.height/10*9) let playerAnimation = SKAction.animate(with: playerAtlas, timePerFrame: 0.1) let playerMove = SKAction.moveTo(y: self.frame.height/100, duration: 1) playerStart.run(SKAction.repeatForever(playerAnimation)) playerStart.run(SKAction.repeatForever(playerMove)) self.addChild(playerStart) if HP == 0 { playerAtlas.removeAll() } } }
あなたの回答
tips
プレビュー