当たり判定で…。
投稿者 : 祐介(g183177.scn-net.ne.jp)
- 2003/07/13(Sun) 23:44
No.3927
|
|
|
|
|
if (e is Enemy && crashTo(e)){処理} この命令のEnemyの部分を、 例えば、それ以前にe1=Enemy;と置き換えておいて、 if (e is e1 && crashTo(e)){処理} と、このようにする事は出来ないのでしょうか? そのようにするとエラーが出てしまうので…。 当たり判定の処理が沢山あるので、そこを何とか上手くまとめたいのです。 何か方法がありましたら教えて頂けると嬉しいです。 宜しくお願いします。
|
Re: 当たり判定で…。
投稿者 : 祐介(g183177.scn-net.ne.jp)
- 2003/07/14(Mon) 18:38
No.3931
|
|
|
|
自分なりにまとめてみました。 ↑の方法では上手く行かないようなので。 こんな感じにしてみたのですが、不要なところとかがあれば教えてください。(「t is ○○」と「crashTo(t)」を2回使っているので)
function atariHantei(pp1,damage,score){ for (t in $chars) { if((t is tama1 || t is tama2 || t is bomb2 || t is tama3 || t is tama4 || t is tama5) && crashTo(t)){
if (t is tama1 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama2 && crashTo(t)){ damage2=damage*3; dis=1;} if (t is bomb2 && crashTo(t)){ damage2=damage*0.1; dis=0;} if (t is tama3 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama4 && crashTo(t)){ damage2=damage*10; dis=0;} if (t is tama5 && crashTo(t)){ damage2=damage*5; dis=0;} //弾の種類によるダメージ量変化と、弾消滅有無 time=3; p=pp1; life-=damage2*$dLV*$dLV2; $score+=score*$sLV; if(dis==1)t.die(); if (life<1) die(); } } if (crashTo($jiki)) $jiki.damage(); //自機にぶつかると自機ダメージ }
|
Re: 当たり判定で…。
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2003/07/16(Wed) 00:01
No.3936
|
|
|
|
step1
if (t is tama1 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama2 && crashTo(t)){ damage2=damage*3; dis=1;} if (t is bomb2 && crashTo(t)){ damage2=damage*0.1; dis=0;} if (t is tama3 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama4 && crashTo(t)){ damage2=damage*10; dis=0;} if (t is tama5 && crashTo(t)){ damage2=damage*5; dis=0;}
ここのくだりはすべてcrashTo(t)はいりません。なぜなら、すでにcrashTo(t)はその前のif文で確認されています。
|
Re: 当たり判定で…。
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2003/07/16(Wed) 00:07
No.3937
|
|
|
|
step2
もっと短くするなら次のようにします
if (t is tama1 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama2 && crashTo(t)){ damage2=damage*3; dis=1;} if (t is bomb2 && crashTo(t)){ damage2=damage*0.1; dis=0;} if (t is tama3 && crashTo(t)){ damage2=damage*1; dis=1;} if (t is tama4 && crashTo(t)){ damage2=damage*10; dis=0;} if (t is tama5 && crashTo(t)){ damage2=damage*5; dis=0;}
この部分を次のようにかえます:
damage2=t.onCrash(damage);
さらに、すべてのtamaオブジェクトに、次のようなonCrashメソッドを作成します。
例:tama2の場合
function onCrash(d) { die(); // (dis=1の場合のみ) return d*3; }
|
Re: 当たり判定で…。
投稿者 : 祐介(g183177.scn-net.ne.jp)
- 2003/07/17(Thu) 00:16
No.3941
|
|
|
|
そこのcrashTo(t)は不要だったんですか。分かりました。 step2>そういうやり方もあるんですね。 勉強になります。 どうもありがとうございました。 また質問することがあると思うので、その時は宜しくお願いします。
|
|