どうも!新入社員のタケです!
もうしばらくはIt's My Houseの室内バージョンを進めていくことになりました!
まだまだUnityと格闘してプログラミングとデザインをしていくと思います。
今回は部屋を真上から見ながらレイアウトすることができる、2Dレイアウトモードを実装していきます。
2Dレイアウトモードは今までのカメラとは違い、視点を回転することができないのでカメラ操作が変わります。
ホイールスクロールでズーム/ズームアウト、右クリックでカメラの位置を移動します。
これは以前作ったカメラアングルチェンジの延長線上にあるような機能です。
いままで5つのカメラアングルがありましたが、6つ目になる感じですね。
もちろん、この状態からそれぞれのカメラへ移動することも可能です。
この状態のイイところは上から見てレイアウトができるので、3Dではわかりづらい壁までの距離などが正確に理解できることです。
ということは正確に2Dの地図と合致しないといけないということですね。
仕組みとしてはこんな感じになっています。
カメラの設定を変更して平行投影にし、上から覗くようなアングルにします。
そしてこのモードの時だけ表示される床のテクスチャを床に合わせて配置して、部屋の間取りを描いています。
この地面だけはキューブマップでは表現できないからですね。
このモードを実装するときに一番大変だったのはズームと移動ですね。
ズームは通常のカメラとは違い、画角ではなくサイズという項目をいじってズームしているように見せます。
始めて使うパラメータだったのでちょっと戸惑いました。
そしてズームできたのは良かったのですが…
ズームしたときになぜかカメラの移動速度がめちゃくちゃ早くなっていました。
実はカメラの移動している距離は変わらないけれど画面を映す範囲が狭くなるので移動が速いように見えているのです。
これを直すにはズームした値に応じて移動倍率をどんどん下げていくことで対応しました。
moveSpeed -= moveSpeed * delta * wheelSpeed;
の一行ですね。
deltaという値がホイールのスクロール量でどんどん変わっていくので、その値を利用して移動速度と連携させるとこのようなことができます。
…
ついでに+と-ボタンでもズームしたりできます。
その時も速度を忘れずに下げないとおかしなことになってしまいますので、ご注意を!
コメント
コメントを投稿