2014年5月21日水曜日

ARFantasy制作過程38(街のシーン)



マップモードで
街に近づくと街モードに入る

街の定義
なるべく自由にアセットを組み合わせて街を作れるようにしたが
まだ中途半端になっている

街は建物と登場人物からなり
建物は衝突領域、外装、背景、扉、からなる

建物と登場人物のクラスを定義

衝突判定はなるべく軽くしたいのでかなり単純化し
矩形の和集合からなる衝突領域から
矩形の和集合からなる非衝突領域
を引いた形状の領域に操作するキャラクターの前方が入り込むと前進できなくなるという
ものにした

外装は屋根や壁

背景は木の骨組みや棚や窓などの内装とそのアニメーション

扉は
鍵の開いた扉に近づくと扉が開き外装が消えて中身が見える
鍵が開くと非衝突領域を追加する


建物や登場人物の名前の連想配列で各データを定義し
それらのコンストラクタに名前を渡すとそのデータでインスタンスを初期化

登場人物付近で会話ボタンをタップすると
登場人物がマーカーの中心に来るように街が滑らかに拡大と平行移動して会話が表示される
会話が終了すると一旦町の中心がマーカーの中心にきて町全体は縮小表示される
その後はピンチジェスチャーで拡大縮小も可能

会話メソッドでは基本は単にセリフを順番に表示するだけ
YES、NOボタンで対応する必要のある会話は
登場人物ごとにオーバーライドしているが
もう少しましな方法がある気もする

迷った点迷い中の点
街モード戦闘モードでは背景を固定し
十字キーで左右に回転と前進後退というキャラクターの相対座標での操作にし
キャラクターはマップモードでは背景が動き主人公は直接十字キーの方向を向くようにしたが
分かりにくい気もする
十字キーの方向を向くにしてもカメラに相対的にするべきかトラッカーに相対的にするべきか

街モードでは町の住民とも戦えるようにするかも迷った
戦うと良心パラメータが減少するようにして
しかしなんとなく却下

背景に置かれたアイテムは拾えるようにして
良心パラメータを減少させるか

宿屋は店員に話しかけると宿泊するかを訊かれてYesと答えると全員の体力回復にするか
それとも鍵を渡されて部屋の扉を開けてベッドまで行くと
ベッドで休むかというメッセージが表示されてYesと答えると全員の体力が回復にするか
前者の方がわかりやすいが
後者も大して手間はかからない上により宿泊している感じがある

背景の位置やスケールの扱いに迷った
建物データに入れた
背景の位置や大きさという背景そのもののみしかない時には意味をなさないデータは
背景を含むクラスのほうで扱いたいから
建物の一部としての背景の位置や方向や大きさは建物のデータの一部
同様に建物の位置も街のデータの一部

街は建物データと登場人物データからなり
実際の建物オブジェクトの配列は街クラスのメンバでなくグローバル変数にしてしまった
なんとなく人形劇の舞台のように
建物オブジェクトの配列は一つだけしか使わないから
それを操作するのが街データというイメージだったけど
やはり普通に実際の建物オブジェクトの配列も街クラスのメンバにした方がよかったか
街の表示メソッドで表示される直前にコンストラクタ呼び出して
表示終了したらデリートすれば
メモリは今までと大して変わらないが若干わかりやすい気もする
書き直した方がいいかも


人気ブログランキングへ
にほんブログ村 デザインブログランキング

0 件のコメント:

コメントを投稿