8日目
こんばんは。
昨日のサッカーのせいで寝不足すぎた。
でも面白い試合だった。
今日は3か月にわたって繰り広げられたクソみたいな新人研修の最終日でした。
ゆるいって理由で今の会社に入ったのに、銀行とか商社相手に研修を行ってる会社の研修を受けてたんすよ。
チョーしんどかった。
いちいち起立!礼!着席!あるし、部屋出るときは一例しなくちゃいけないし。
あとなんだったかな…
班を3つ作るんですけど、最後にそのチームのよかったところと悪いところをそれぞれ評価するみたいなことやってました。
とてもしんどかったです。
さて今日はコードの話です
5日目 - Twitterをやめるまで
ここで話したシューティングゲームの弾と敵すべてに判定を持たせてぶつかったら消えるということをしたいってやつ。
まず、enchantjsではsceneっていう層というか、画面みたいなのに画像を載せるんですね。
game.rootScene.addChild(hantei_shot_chara);
これでhantei_shot_charaという躯体をgameという本体のSceneという画面に追加するんですね。
んで、こいつは配列みたいな形で格納されます。
つまり、Sceneの中の配列に直接アクセスするというか抽出してしまえば、それぞれの判定を引っこ抜けるというわけです。
それを踏まえて、敵キャラの判定に自機の弾が当たったときのイベントのコードをを書きます。
hantei_enemy.addEventListener(Event.ENTER_FRAME, function () { if (this.intersect(hantei_shot_chara_group.childnodes)){ enemy.image = game.assets["effect.gif"]; enemy.frame = 0; game.rootScene.removeChild(this); game.rootScene.removeChild(enemy); } }
説明しておくとintersectってのは重なったらということです。
ちなみにhantei_shot_charaは弾の判定だけのグループ化をさせてます。
var hantei_shot_chara_group = new Group(); hantei_shot_chara = new Sprite(4,16); //中略 hantei_shot_chara_group.addChild(hantei_shot_chara) game.rootScene.addChild(hantei_shot_chara_group);
でもこれだとintersectの引数ではhantei_shot_chara_group.childnodesを拾ってくれません。
なのでif文の前にfor文を使って、hantei_shot_chara_groupの中すべての要素を拾ってもらうようにします。
hantei_enemy.addEventListener(Event.ENTER_FRAME, function () { var all_element; for(var i=0; i < hantei_shot_chara_group.childnodes.length ; i++){ all element = hantei_shot_chara_group.childnodes[i]; } if (this.intersect(all element)){ enemy.image = game.assets["effect.gif"]; enemy.frame = 0; game.rootScene.removeChild(this); game.rootScene.removeChild(enemy); } }
これでそれぞれの弾の判定と敵キャラの判定がぶつかるようにできました。
何かあれば聞いてください。
頑張って説明するので。
明日は勉強しないとな~
早くPC買って家の開発環境整えたいな。
眠い。
おやすみなさい