マップの障害物
投稿者 : Coco(YahooBB218143150160.bbtec.net)
- 2003/12/06(Sat) 15:52
No.4889
|
|
|
|
|
Tonyu初心者です。いまRPGに挑戦していますが、 マップ上でキャラが通れないマップパターン(壁、崖、ブロックなど)を まとめて定義する良い方法はありますか? チュートリアルででてきた
if (getkey(39) && $map.getAt(x+16,y)!=$pat_Block+0 ) x+=3; // ↑ カーソルキー右が押され、さらに右側が壁でなければ右へ移動
のようにすると、壁(通れない場所)の種類が複数あるときに困ってしまいます。
|
Re: マップの障害物
投稿者 : りょうた(EAOcf-222p158.ppp15.odn.ne.jp)
- 2003/12/06(Sat) 16:08
No.4890
|
|
|
|
不定個の値を扱うときは、配列を使います。
配列とループを組み合わせます。
a=new Array(); a.add($pat_Block+0); a.add($pat_Block+1); if(getkey(39)){ c=1; for(b in a){ if($map.getAt(x+16,y)==b) c=0; } if(c){ x+=3; } }
|
Re: マップの障害物
投稿者 : Coco(YahooBB218143150160.bbtec.net)
- 2003/12/06(Sat) 19:50
No.4896
|
|
|
|
なるほど…配列ですか。 どうもありがとうございます。
|
Re: マップの障害物
投稿者 : Coco(YahooBB218143150160.bbtec.net)
- 2003/12/06(Sat) 20:04
No.4897
|
|
|
|
配列についてヘルプで調べたところ Array.addは処理中にするなと書いてあったのですが
障害物とするパターンはあらかじめテキストに書いて保存しておき 処理中にArray.loadで呼び出す
ということでよいのですか?
|
Re: マップの障害物
投稿者 : Coco(YahooBB218143150160.bbtec.net)
- 2003/12/07(Sun) 06:42
No.4900
|
|
|
|
4900.lzh
実際に作ってみたのでアップします。 障害物に関してなにもしていないEnemy001は カーソルキーで正常に動きます。 それに対して、障害物に関する処理をしているMyCharは まったく動いてくれません。
どうすればよいでしょうか?
|
Re: マップの障害物
投稿者 : りょうた(EAOcf-292p94.ppp15.odn.ne.jp)
- 2003/12/07(Sun) 09:42
No.4901
|
|
|
|
>Array.addは処理中にするなと書いてあったのですが これはfor(b in a){}の処理中にするなということです。
なぜ動かないかというと、 a.load("map_passable.txt") とすると、配列の中身は
"$pat_map_town01+1", "$pat_map_town01+2", "$pat_map_town01+3", "$pat_map_town01+4", "$pat_map_town01+40", ...
つまり、テキストに書いてあるものがそのまま文字列表現として読み込まれるわけです。($pat_...が解釈されない) 対処法は、 1.a.addをつかう。 2.完全な数字で書き込む。 $pat_map_town01+1なら56 $pat_map_town01+2なら57 しかし、これでは後で狂ってしまうかもしれないので、 このファイルでは$pat_map_town01で通れないものだけを書くことにして、 3.ファイルには$pat_map_town01+○の○の部分だけ書き込んで if($map.getAt(x+_x*16,y+_y*16) == $pat_map_town01+valueOf(b)) c=0; とする。
あとは、自前で$pat_...を解釈するなんてやり方もありますけど。
長くなってしまたので、よくわからないところがあるかもしれません。
|
Re: マップの障害物
投稿者 : Coco(YahooBB218143150160.bbtec.net)
- 2003/12/07(Sun) 10:07
No.4903
|
|
|
|
|