VRゲーム開発日記@長崎Unityを使ったVRのゲーム開発をやってます。この広告は、90日以上更新していないブログに表示しています。時職人作り方2回目です。今回はストップウォッチ部を解説予定でしたが、メニュー部にまだネタがありそうだったので、もう少しそちらを説明していきます。今回は、アイコンの並べ方のロジックについてです。以前も軽く触れましたが、アイコンメニューは実行時に自動生成し、戻るアイコンはEditor上で予め配置しています。全7エリアの、12ステージでゲームが構成されています。ループで回して、その中でアイコンのオブジェクトを生成していく形です。画面表示の都合上、4ステージ毎にアイコンの折り返しをしています。そのため、ステージをさらに行と列のループに分けています。y);}}}}areaNoのループがエリアのループ。ステージが増えても良いように、ループ回数はメンバ変数としています。x座標に関してループしています。列と行は、変えるつもりはなかったのでconstです。84で全84ステージ分のアイコンをCreateIconで実体化させています。個別アイコンの位置決め先ほどのループで、どのアイコンを作るかというところまで確定しているので、あとはそこから詳細な位置を導き出します。〜〜}久々に紐解いてみましたが、やや複雑な計算ですね...自分で作ったのに、どこで何しているのかよくわからないです。148ってなんだよ...リファクタリングがきちんとできていない証拠ですね(--;x座標まずはposXの座標をどう求めてるか見ていきます。148148はアイコン部分の基本幅になります。単純に並べるだけなら、この部分だけでOKで、148の値を適当に調整すればなんとなくの位置に並べることも可能です。2)Iconは、Iconのオブジェクトになります。アイコンとアイコンの間隔をアイコンの大きさの半分にしたかったみたいです。OFFSET_X5000で設定されていました。前回説明してましたが、アイコン部分と情報説明部分を別のカメラで描画しており、それぞれが間違って被らないようXを遠くに設定していたようです。今回はX位置を決めるのが煩雑だったのでちょっと設計ミスだったかもです。Constants.DISP_W)エリアごとの幅調整をしています。1エリアと、2エリア目は画面スクロールで別画面になるため、アリア内でのアイコン幅より若干広めに取っておく必要があります。ICON_OFFSET_X今表示されてる画面の左からどれくらいオフセットを取るかという数値です。以上を足すことにより、X座標が求まりました。一応、全部目的があって複雑になってたようです。y座標y座標は大分シンプルです。x座標で既にでてきた考えと同様なので、簡潔に行きます。Unityのワールド座標のy値は標準のカメラの位置では、画面下がマイナスになってるので、マイナスを掛ける必要があります。感覚的なy値と実際のy座標をあわせれるのでは!?と今思いつきました。Quaternion.identity);予め計算したx,y座標位置に、オブジェクトを生成。今回は2D画面を想定してるので、z値は固定です。座標を決めるのも意外と大変でした。次回は、アイコン部分の生成です。)プロフィールid:icoc_dev主にUnityを使って、iPhone、Androidアプリを制作しています。