プログラミング関連の覚え書き集

躓いて解決したりしなかったりした問題のまとめ

扉のような回転軸のずれたオブジェクトの作り方

f:id:freesoft-48784:20171003153015p:plainこんな感じの扉を作りたいとします。

ネットで調べると主に2つ作り方を見つけられました。

①別ソフトで扉をモデリングし、その時に基準点を端に設定しておく

スクリプトでPivotをいじる。

ただし、これらの方法では扉の形が変わるごとにスクリプトや扉自体を作り直さなくてはなりません。凝ったゲームを作るなら①を使うべきなのでしょうが、そこまで手間をかけずに色々な形の扉が作りたい、という場合の良い方法がありました。

まず、扉となる板(Cubeの形をいじった物)と軸(Cylinder)を用意します。軸を表示したくない場合は当たり判定のコンポーネントを削除して透明にしておけば良いでしょう。

次にこれら2つにRegidbodyコンポーネントを追加し、軸の方はpositionのxyzとrotationのxz、扉の方はpositionのyとrotationのxzを固定します。

最後に扉の方にphisicsのFixed jointコンポーネントを追加して、Connected Bodyに軸を設定すればOKです。

これをEmpty Objectの中に入れてPrefabにしておけば扉の形を変えるだけで色々な扉を作ることができますし、軸から扉が離れていても正常に動いてくれます。