市販の本を参考にゲームを作っていますが、
enemySprite[i].position.y -= enemySpeed[i]
この一文でエラーになってしまいどうすることもできなくなってしまいました。
何が問題でどのようにすれば良いでしょうか?
エラーで出る文面は、
Thread1:EXC_BAD_INSTRUCTION(code=EXC_l386_INVOP.subcode=0×0)や、
CUICatalog: Invalid Request: requesting subtype without specifying idiom
fatal error: Array index out of range
(lldb) 等です。
swift
1 2import SpriteKit 3 4let rocket = SKSpriteNode(imageNamed:"myself.png") 5//敵の準備をする 6var enemyCount = 8 7var enemySpeed:[CGFloat] = [] 8var enemySprite:[SKSpriteNode] = [] 9 10//このシーンを作る 11class GameScene: SKScene { 12 13 //シーンの最初に一度だけ呼ばれる処理 14 //このシーンで通して使うものを配置 15 override func didMoveToView(view: SKView) { 16 //背景色をつける 17 self.backgroundColor = UIColor(colorLiteralRed: 0.04, green: 0.03, blue: 0.4, alpha: 0.03) 18 //ロケットを表示する,初期位置 19 rocket.position = CGPoint(x: 500, y: 100) 20 //大きさ調整 21 rocket.xScale = 0.1 22 rocket.yScale = 0.1 23 //ロケットをシーンに追加 24 self.addChild(rocket) 25 } 26 27 override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { 28 for touch: AnyObject in touches { 29 //ロケットをタッチした位置の少し上に表示する 30 rocket.position = touch.locationInNode(self) 31 rocket.position.y += 120 32 } 33 } 34 35 //敵を作る作業をまとめておく 36 //initはイニシャライズの略 37 func initEnemy() { 38 for i in 0 ... enemyCount{//0〜enemycountまで繰り返す 39 //画面の上の方に隕石を作って表示し、そこから降らせる 40 let enemy = SKSpriteNode(imageNamed: "enemy1.png") 41 let ex = Int(arc4random_uniform(750)) 42 let ey = Int(arc4random_uniform(1334) + 1334) 43 enemy.position = CGPoint(x: ex, y: ey) 44 self.addChild(enemy) 45 //作った敵を配列に追加する 46 enemySprite.append(enemy) 47 //敵の移動スピードをランダムに用意して配列に追加する 48 let speed = CGFloat(arc4random_uniform(15)+5) 49 enemySpeed.append(speed) 50 51 52 53 54 } 55 } 56 //敵を動かす処理 57 func moveEnemy() { 58 for i in 0 ... enemyCount {//0〜enemycountまで繰り返す 59 enemySprite[i].position.y -= enemySpeed[i] 60 //もし画面の下まで来たら 61 if enemySprite[i].position.y < 0{ 62 //画面の上までランダムに移動する 63 let ex = Int(arc4random_uniform(750)) 64 let ey = 1334 65 enemySprite[i].position = CGPoint(x: ex, y: ey) 66 let speed = CGFloat(arc4random_uniform(25)+5) 67 enemySpeed[i] = speed 68 } 69 } 70 71} 72 //素早く繰り返す仕組み最速で1/60秒ごとに呼び出される 73 override func update(currentTime: CFTimeInterval) { 74 moveEnemy() 75 } 76 77 78 79}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/29 15:52