どうも!新入社員のタケです!
今日は前回の続きで部屋の間取りを作るソフトの開発で、
壁を作るツールの部分を解説をしていきたいと思います!
現在は床を敷けるようになりました!
壁を作るシステムを応用して作っているので比較的簡単に実装できました。
始めに作ったライン一本線から壁ができるシステムの仕組みですが、画面の上にマウスカーソルを載せるとオレンジ色の角柱が出てきます。
前も紹介した通り、これがここから壁を作ります!というガイドになりますね。
そして、画面をドラッグすると二色の角柱が出てきます。
クリックした場所(開始地点)が赤色、ドラッグした場所(終了地点)が緑色ですね。
その二つの柱の間に壁のオブジェクトが動的に作られるので点と点で結ばれているように見えるんですね。
動的に作られている部分の処理はこちら!
間に作られる壁の位置は柱の間の距離を取ってくれるVector3の関数、Distanceを使っています。
この距離をとるだけだと終了地点の柱と同じ場所になってしまうので、これを1/2にすることにより開始と終了地点のど真ん中に柱が置けるんですね。
distance1 = Vector3.Distance(start.transform.position, end.transform.position);
二本の柱は常にお互いに向き合っています。
TransformのLookAtでどこに向くか?という指定ができます。
start.transform.LookAt(end.transform.position);
end.transform.LookAt(start.transform.position)
お互いに向き合ってることで、実際に生成される壁の向きを変えることができますね。
私の書き方では開始地点の柱と同じ向きにすることによって真ん中に生成される壁も同じ方向を向くのでこれで角度がとれました。
wall.transform.rotation = start.transform.rotation;
あとはスケールですが、二つの柱の間の距離がDistanceで取れているのでそれをそのままzスケールとして代入します。
wall.transform.localScale = new Vector3(wall.transform.localScale.x, wall.transform.localScale.y, distance1);
これでようやく点と点が結ばれて、晴れて壁が出来上がりました!
一見難しそうなことをしていますが、ちゃーんと理屈が分かっていれば意外と簡単にできちゃいますね!
…
ロの字の壁を作る時は開始地点の柱と終了地点の柱だけではなく四角の角にあるもう二つの角柱も作らなければなりません。
それができたらラインの時と同じように柱同士を結んだら完成です。
壁も四つできることになるので、そこは注意しましょうね!
コメント
コメントを投稿