初心者のSWIFTアプリ開発記 ©たぬきち

肥満気味になってきたので筋トレに励んでいます! プログラミング頑張ります

シューティングゲームの敵キャラにhpの設定・・・swiftアプリ開発

今回は珍しくすんなりと設定できた( ^ω^ )

  

どうやるんだ!??と、悩んでなんとなく手探りでやってみる

適当にやったし、テストしても動きそうにないな・・・

f:id:egoisticYK:20150826042357p:plain

う、動いている!

ちゃんと思い通りに設定できているじゃないか!!!!!

このパターンがすごい嬉しい!

アプリ作っていて儲かるという喜びを体感していないから

現時点ではこれが一番嬉しいね

f:id:egoisticYK:20150826042402p:plain

以下、詳細!?

雑魚キャラは設定済み。

次は少し強い、一発攻撃した程度では死なないやや強敵を配置したいo(`ω´ )o

👇

var boss = SKSpriteNode(texture: texture)
boss.hp = 3

・・・hpなんて項目があるはずない!!!!

だめだーー敵は大量生産しているから、

個別に管理する方法よくわからないし

もうだめだーーー´д` ;

f:id:egoisticYK:20150826042351p:plain

以前、参考書を書き写していた時に確かhp設定したはず!

・・・あ、ありました!

👇

とりあえず別クラス作成!

class CharacterNode: SKSpriteNode{
    var hp = CGFloat 
}

これで

var boss = CharacterNode(texture:texture)
boss.hp = 3

い、いけたある( ^ω^ )

あとはお得意の接触判定で removefromparent()からhpを減産する設定に変えればいけるはず・・・

´д` ;💦

ここで少し悩みました。

雑魚と強敵の判別を分ける方法

これは enemy.name = "enemy"
enemy.name = "boss"

と事前に設定していたので、名前で区別すればなんとかいけるはず・・・

 if firstBody.categoryBitMask & ColliderType.enemy != 0 &&
 secondBody.categoryBitMask & ColliderType.circle != 0{

                if firstBody.node?.name == "enemy" {

                    firstBody.node?.removeFromParent()

                    score++

                }else if firstBody.node?.name == "boss"{
                   
                }
                
}

ど、どうやってfirstBodyにbossのhp設定を関連付けるのじゃ?😇

適当にfirstBody.node?.hp なんてやっってみても出ない その後もいろいろ試すもよくわかんないというか、エラーになるから違うのはわかる!

とりあえずまた参考書を見直すと if let example = example_node{  なんとか( ^ω^ ) }

こんな感じの書き方してあったし、書いた気がするなー程度に覚えていたのでためす!

if let node = node.name == "boss"

・・・み、みるからにエラーな書き方やで´д` ;💦 さ、参考書様をみなくては・・・

・・・・💡

if let node = firstBody.node as? CharacterNode{ }

エラーにならんす( ^ω^ )

 if firstBody.categoryBitMask & ColliderType.enemy != 0  
 && secondBody.categoryBitMask & ColliderType.circle != 0{  
                if firstBody.node?.name == "enemy" {      
                    firstBody.node?.removeFromParent()  
                    score++  
                }else if firstBody.node?.name == "boss"{  
                    if let node = firstBody.node as? CharacterNode{  
                        if node.hp > 0{  
                            node.hp--  
                        }  
                        else{  
                            node.removeFromParent()  
                            score++  
                        }
                    }
                }
               
        }

if let node = firstBody.node as? CharacterNode

この分がどんな働きをしてくれているのかとか全然理解していないけど、

これで実行してみたら驚くべきことに、ちゃんと望み通りにできました。 三回弾がヒットすると消えやがる( ^ω^ )

・・・とーーってもかぁーーーーんたーーーーん   f:id:egoisticYK:20150826042416p:plain