Terrainのシーンにキャラクターモデルを配置する - リジッドボディによる重力の適用と地面との接地判定の適用 - Unity
Terrainのシーンにキャラクターモデルを配置する手順を紹介します。
概要
Terainオブジェクトのシーンにキャラクターを配置します。高低差がある地形のため、キャラクターのモデルに呪力を適用する必要があります。また、重力が適用されることで、下に落ちる力が働くため、地面との接地判定をして地面にめり込まないような処理もする必要があります。
事前準備
こちらの記事を参照してTerrainオブジェクトを利用した地形を作成します。
手順
Terrainオブジェクトを利用して地形を作成したプロジェクトを開きます。
キャラクターのモデルを読み込みます。今回はユニティちゃんのモデルを利用します。ユニティちゃんのインポート手順は[[こちらの記事>
unity-import-unitypackage-file ]]を参照してください。
インポートすると[Assets]ウィンドウに"UnityChan"のフォルダが追加されます。
モデルの配置
[Assets]ウィンドウのユニティちゃんのモデル "SD_unitychan_generic.fbx" をシーンにドラッグ&ドロップします。シーンにユニティちゃんのモデルが配置されます。
視点を移動します。配置されたユニティちゃんは浮いていることが確認できます。このまま実行すると浮いた状態になってしまうため、ユニティちゃんのモデルに重力を適用させる必要があります。
重力の適用 (リジッドボディコンポーネントの追加)
ユニティちゃんのモデルを選択した状態でウィンドウの右側の[インスペクター]ウィンドウの下部の[コンポーネントを追加]ボタンをクリックします。
下図のメニューが表示されます。[物理]の項目をクリックします。クリックすると物理関係のコンポーネントが表示されます。一覧から[リジッドボディ]をクリックして選択します。
[インスペクター]ウィンドウに[リジッドボディ]の項目が追加されます。
リジッドボディの設定を確認します。[重力の使用]にチェックがついていることを確認します。
ユニティちゃんが見える位置にカメラを移動させます。
Playボタンをクリックしてプロジェクトをスタートします。ユニティちゃんが重力に引かれて下に落下します。しかし、地面を突き抜けてさらに下に突き抜けて行ってしまいます。
リジッドボディを適用すると重力の効果は受けますが、地面との接地は考慮されないことがわかります。
地面との接地の適用 (ボックスコライダーの追加)
地面との接地の判定を追加します。ユニティちゃんのモデルを選択した状態でウィンドウの右側の[インスペクター]ウィンドウの下部の[コンポーネントを追加]ボタンをクリックします。メニューが表示されますので、[物理]の項目をクリックします。物理関係のコンポーネントが表示されますので、[ボックスコライダー]の項目をクリックします。
[インスペクター]ウィンドウに[ボックスコライダー]が追加されました。
Playボタンをクリックしてプロジェクトを実行します。今度は、ちょっと落下した後に静止します。空中に静止した状態になります。これはボックスコライダーとモデルとの間のマージンが正しく設定されていないためと考えられます。
シーンのウィンドウに戻り、ユニティちゃんのモデルを選択し、[インスペクター]ウィンドウの[ボックスコライダー]セクション内の[Edit Collider]ボタンをクリックします。ボックスコライダーの編集画面が表示されます。ユニティちゃんのモデルを過酷陽に表示されている緑の立方体の枠がボックスコライダーの枠です。ボックスコライダーの面の中央に緑色の点があります。その部分をマウスでドラッグするとボックスコライダーの面の位置を変更できます。
視点を変更し、ボックスコライダーの枠がぴったりユニティちゃんのモデルを囲むように修正します。
Playボタンをクリックして実行します。今度は地面に設置しますが、勢いでユニティちゃんが転んでしまします。
地面までの距離が遠すぎるようなので、地面までの距離を近づけます。
また、[リジッドボディ]の枠の質量を40(=40kg)に設定します。少し重めにしておいたほうがよさそうです。
実行結果
Playボタンをクリックしてプロジェクトを実行します。空中から落下して地面に着地できました。
キャラクターをTerrainオブジェクトの面に立たせることができました。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2018-12-24
作成日: 2018-12-24