はじめまして
投稿者 : 臓(i07-071.us.catvmics.ne.jp)
- 2004/04/27(Tue) 20:50
No.6112
|
|
|
|
|
質問です
extends SpriteChar; //敵HP用配列の設定 ELife=new Matrix(10); ELife.addRows(2);
for (i=0 ; i<10 ; i++) { ELife.set(i,0,50); } ELife.set(0,1,$Enemy_1.getValueByIndex()); ELife.set(1,1,$Enemy_2.getValueByIndex()); //敵のダメ−ジ設定 while (y<$screenHeight) { for (t in $chars) { if ( t is Arm && crashTo(t) ) { Ec=0; Ei=valueOf(getValueByIndex());//攻撃対象の取得 //攻撃対象の現在のHPを取得 while (1) { Eflg=valueOf(ELife.get(Ec,1)); if (Elfg==Ei) { //敵HPの減算 El=ELife.get(Ec,0); El-=10; if(El<=0) {die(); break;} ELife.set(Ec,0,El); wait(10); update(); break; } Ec+=1; if(Ec==11) break;//ループの終了 } } } //プレイヤーのダメージ設定 if (crashTo($MyChar) && $ND==0) { $ND=50; $Life-=5; if($Life<0) $MyChar.die(); } update(); }
上記のスクリプトは本体をコピーして増やして作成した敵のHPの 設定及び減算するものなのですが //攻撃対象の現在のHPを取得 部分の if (Elfg==Ei) {・・・ 以降のスクリプトが条件が一致しているはずの状態でも 作動しません 一応valueOfまで使って数字に統一したのですが・・・
|
Re: はじめまして
投稿者 : Ryota(EAOcf-147p168.ppp15.odn.ne.jp)
- 2004/04/27(Tue) 21:25
No.6113
|
|
|
|
getValueByIndex関数は引数を1つ与えそのIndexを持つオブジェクト変数の値を求めるものなので、今回の場面で用いているのはおかしいと思うのですが。
ELife.set(0,1,$Enemy_1.getValueByIndex()); ELife.set(1,1,$Enemy_2.getValueByIndex()); どういう意図でこのあたりのコードを書いたのかを教えていただけませんか。
|
Re: はじめまして
投稿者 : 臓(i07-071.us.catvmics.ne.jp)
- 2004/04/28(Wed) 23:16
No.6119
|
|
|
|
$Enemy_1,$Enemy_2はこのスクリプトのあるEnemyクラスを 持つオブジェクトをコピーした物で、
ELife.set(0,1,$Enemy_1.getValueByIndex()); ELife.set(1,1,$Enemy_2.getValueByIndex());
は画面上に作成したオブジェクトのインデックス番号を 配列ELifeに取得する為のものです 因みに2つしかないのは実験段階で仮に作った為です ・・・ヘルプに書いてあったのを適当に使っただけなので どういうものなのか全く分からずに使ってます
|
Re: はじめまして
投稿者 : Ryota(EAOcf-144p210.ppp15.odn.ne.jp)
- 2004/04/28(Wed) 23:52
No.6120
|
|
|
|
よくわかりました。
"getValueByIndex"は「オブジェクトのインデックス番号」を得るのではなく、 オブジェクト変数の値を得るメソッドです。 $Enemy_1.getValueByIndex()は$Enemy_1.getValueByIndex(0)と同じことで、この場合は、$Enemy_1.xの値を返します。
ELife.set(0,1,$Enemy_1); ELife.set(1,1,$Enemy_2); このようにすれば二次元配列にオブジェクトを代入できます。
|
Re: はじめまして
投稿者 : 臓(i07-071.us.catvmics.ne.jp)
- 2004/04/29(Thu) 09:41
No.6122
|
|
|
|
作動するようになりました 有難うございます ・・・やっぱり適当にやっていたら駄目ですね
|
|