//depthも? static var PLAYER_BULLET_NUM_MAX = 100; var m_PlayerBullet:Array = new Array(PLAYER_BULLET_NUM_MAX); static var ENEMY_NUM_MAX = 100; var m_Enemy:Array = new Array(ENEMY_NUM_MAX); static var ENEMY_BULLET_NUM_MAX = 100; var m_EnemyBullet:Array = new Array(ENEMY_BULLET_NUM_MAX); //プレイヤーがエネミーに接触したときのダメージ:今のところ固定 static var ENEMY_DAMAGE = 10; for(var i = 0; i < PLAYER_BULLET_NUM_MAX; i++){ m_PlayerBulet[i] = undefined; } for(var i = 0; i < ENEMY_NUM_MAX; i++){ m_Enemy[i] = undefined; } for(var i = 0; i < ENEMY_BULLET_NUM_MAX; i++){ m_EnemyBullet[i] = undefined; } //hit check //エネミーとプレイヤー・プレイヤー弾の衝突判定 for(var e = 0; e < ENEMY_NUM_MAX; e++) { if(m_Enemy[e] == undefined){continue;} //プレイヤー弾との衝突 for(var pb = 0; pb < PLAYER_BULLET_NUM_MAX; pb++) { if(m_PlayerBullet[pb] == undefined){continue;} if() {//m_Enemy[e].m_Pathとm_PlayerBullet[pb].m_Pathの衝突判定 m_PlayerBullet[pb].m_Flags |= PlayerBullet.FLAG_KILL; m_Enemy[e].m_HP -= m_PlayerBullet[pb].m_Damage; //マイフレームHPチェックで死亡確認? } } //プレイヤーとの衝突 for(var p = 0; p < PLAYER_NUM_MAX; p++) { if(m_Player[p] == undefined){continue;} if() {//m_Enemy[e].m_Pathとm_Player[p].m_Pathの衝突判定 m_Player[p].m_Flags |= Character.FLAG_KILL; m_Player[p].m_HP -= ENEMY_DAMAGE;//m_Enemy[e].m_Damage; // } } } //敵弾とプレイヤー //トラップとプレイヤー
やっぱり衝突管理するからには各インスタンスを配列で持っておきたい。リスト(NOT配列)を作るのがめんどそうなので、要素数制限で。UpdateもAppで呼ぶか?
メモ:ActionScript2では全ての変数(型によらない)は未初期化時にundefinedが入ってるらしい。
ちなみに、衝突処理をまじめにやる場合は二次元配列用意して[Player][Enemy]=trueみたいな感じで衝突するかの判定をするべきなのだろう。今回はかなりfalseが多いので羅列する。さらにちなみにメモしておけば、単純な四角形の重なりを見るのではなく前フレームからの移動を考慮した衝突判定まですべき(高速移動ですり抜けないように)。でも面倒だから今回はやらん。
っていうかこんだけ限定されてたらIDamage作ってコンストラクタとデストラクタでリストの出入りをさせたほうが楽.でもデストラクタの作成方法がわからん.ちゃんとインタフェースのも呼ばれるようにできるのか?もう少し調べる.