UnityでGameObjectのPrefab化、動的インスタンス生成&物理演算エンジンRigidbodyを使う基本ゲーム開発初心者のためのUnity入門(12)(4/6 ページ)

» 2017年02月06日 05時00分 公開
[薬師寺国安PROJECT KySS]

3Dキャラクターに当たり判定を付ける

 Hierarchyから「UnityMan」を選択し、Inspectorの「Add Component」ボタンをクリックし、「Physics」→「Character Controller」と選択する。Inspector内に「Character Controller」が追加される。「Center」の「Y」の値を「1」に指定する。これは当たり判定をする箇所で、ここが「0」のままだと、3DキャラクターがCubeなどの障害物をすり抜けてしまう。必ず「1」に設定しておこう。

 設定するとScene画面上の3Dキャラクターが薄緑色の円柱形で囲まれる(図15)。

図15 「Character Controller」の「Center」を「1」に指定

3Dキャラクターに「Locomotion Player」のスクリプトとRigidbodyを追加

 次に、再度「Add Component」ボタンをクリックして、「Scripts」→「Locomotion Player」と選択する。Inspector内に「Locomotion Player」のスクリプトが追加される(図16)。

図16 「Locomotion Player」のScriptが追加された

 最後に、「Add Component」ボタンから「Physics」→「Rigidbody」を選択しておこう。全て設定したUnityManのInspectorは図17のようになる。

図17 全て設定したUnityManのInspector

ここでいったん実行して3Dキャラクターの動きを確認

 これだけの設定で、もう3Dキャラクターは動き回ることができる。実行した動画が動画2だ。

動画2 UnityManがキーボード操作で自由に動く

 動画2を見ると分かるが、3Dキャラクターが画面から外れてしまうことがある。これはカメラが3Dキャラクターを追従していないために発生する現象だ。インポートした「Mecanim Locomotion Starter Kit」で3Dキャラクターを追従させよう。

上空からの視点でカメラの追従設定

 Hierarchyから「Main Camera」を選択し、「Add Component」をクリックして「Camera-Control」→「Smooth Follow」と選択する。すると、Inspector内に「Smooth Follow」のScriptが追加される。「Target」の右隅にある「○に・」アイコンをクリックして、表示される「Select Transform」の画面から、「Scene」タブ内の「UnityMan」を指定する。

 項目が多くて探しにくい場合は、一番上にある検索欄に「Unity」と入力するとUnityManが表示される(図18)。

図18 「UnityMan」を選択する

 「Smooth Follow」の中の「Distance」と「Height」には、カメラの「距離」や「高さ」を指定できる。今回は「Distance」に「4」、「Height」に「3」と指定してみた。各自がいろいろ値を変更してどのように表示されるか確認してほしい。

 「Smooth Follow」を設定して実行したのが動画3になる。

動画3 UnityManにカメラが追従

 ちゃんとカメラが3Dキャラクターを追い掛けている。

スペースキーで無数のCubeの落下を確認

 今回のサンプルでは、「スペース」キーを押すと上空からCubeが落下してくることになっている。UnityManを配置した状態で、実際に「スペース」キーを押すとCubeが落ちてくるかを確認してみる。

 動画4のようになる。

動画4 「スペース」キーでCubeが落下する動画

 まだCubeが降ってくるだけで、Cubeと3Dキャラクターが接触しても何も発生しない。接触した場合に、3Dキャラクターが「Cube」を蹴散らす処理を作っていく。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。