奥行き
投稿者 : A.K(p6132-ipad03fukuokachu.fukuoka.ocn.ne.jp)
- 2004/02/17(Tue) 23:49
No.5345
|
|
|
|
|
今3Dシューティングゲームを作っていて、敵が、こっちに向かってくるようにしたのですが、全く見えません。自機のうしろ側にきたときだけ、見えます。何故なのでしょうか?どなたか教えて下さい。 ちなみにプログラムは
敵 extends DxChar;
// 3D空間上の座標(x2,y2,z)を決める z=1000; x2=(x-$screenWidth/2)*z; y2=(y-$screenHeight/2)*z; apz=rnd(300); va=rnd(10)+1; while (z>100) { // 3D空間上の座標から画面上の座標に変換する x=$screenWidth/2 + x2/z ; y=$screenHeight/2 + y2/z ; // 奥行きzにあわせて表示順序を設定する zOrder=-1000+z; // 移動 z+=vz;x2+=vx;y2+=vy; vz-=0.5;vz=vz*0.99; // zにあわせて大きさを決める scaleX=200/z; } if (!($me.dying) && z>150 && z<150-vz) { // 自機との当たり判定 if (crashTo($tama)) $me.dying=1; else { while (z>100) { } } update(); }
敵を生み出す装置(?)
extends SecretChar;
// 敵の出現 $map.setBGColor(color(0,0,60)); w=$screenWidth/2;h=$screenHeight/2; shc=0; while (1) { if (shc<20) { } // スコアに応じた確率で敵を出現させる if (rnd(50-$score/500)==0) appear(new Drops(w+(rnd()-0.5)*w*0.25,h+(rnd()-0.5)*w*0.25,$pat_+0)); update(); }となっています。
|
Re: 奥行き
投稿者 : hoge-(203-165-20-190.home.ne.jp)
- 2004/02/19(Thu) 00:02
No.5350
|
|
|
|
見たところ、怪しいところは
else { while (z>100) { }
あたりでしょうか。{と}の括弧の数があっていないので、おそらくこの部分が省略されているようです。
プログラム全体を添付してくださったほうがわかりやすいと思います。
|
Re: 奥行き
投稿者 : A.K(p2073-ipad28fukuokachu.fukuoka.ocn.ne.jp)
- 2004/02/20(Fri) 16:56
No.5357
|
|
|
|
ちなみに、サンプルのプログラムをコピペして、作りました。 extends DxChar;
// 3D空間上の座標(x2,y2,z)を決める z=1000; x2=(x-$screenWidth/2)*z; y2=(y-$screenHeight/2)*z; apz=rnd(300); va=rnd(10)+1; while (z>100) { // 3D空間上の座標から画面上の座標に変換する x=$screenWidth/2 + x2/z ; y=$screenHeight/2 + y2/z ; // 奥行きzにあわせて表示順序を設定する zOrder=-1000+z; // 移動 z+=vz;x2+=vx;y2+=vy; vz-=0.5;vz=vz*0.99; // zにあわせて大きさを決める scaleX=200/z; // 回転する angle+=va; if (!plc && z<900) { $mplayer.play($se_pass0); plc=1; } if (!($Fighter.dying) && z>150 && z<150-vz) { // 自機との当たり判定 if (crashTo($Fighter)) $Fighter.dying=1; else { // 自機をかすめた場合、近いほど高得点が入る di=dist(x-$Fighter.x,y-$Fighter.y)*0.1-3;//print(di); if (di>0.1) scad=trunc(10000/di/di ); if (scad>300) $mplayer.play($se_pass3); else if (scad>200) $mplayer.play($se_pass2); else if (scad>50) $mplayer.play($se_pass1); $score+=scad; } } update(); }
この中から、いらない物をけしたり、 少々変更を加えたりしたのです。
|
|