Unityのアドベンチャーゲーム制作アセットAdventure Creator を使って、プレイヤーが操作しないキャラクター、NPCを自動巡回させる方法を試してみました。
こちらの記事と同じ手順でシーンを用意しました。
ライティングについては、エリアライトと自己発光マテリアルのパラメータを調整。比較するとこんな感じです。自己発光を強くすると間接光の影響が大きくなるのでコントラストが弱くなりますが、今回はこちらの方で進めてみることにしました。
シーンにStaticでないオブジェクトのキャラクターを配置するとこんな風にキャラクターだけが真っ暗になります。
キャラクターにライトが反映されるようにライトプローブを配置しました。[Scene]ビューで見るとこのようになっています。キャラクターの影が床に落ちていなのでちょっと不自然ですが、これでいきましょう。
今回はNPCのキャラクターのセットアップを新規に行います。使用するキャラクターはUnityの無料アセットのキャラクターから、こちら Space Robot Kyle を使用します。
インポートしたアセットの構成は下記のようになっています。
インポートしたキャラクターオブジェクトのアニメーション設定を変更します。
[Project]ウィンドウ > Assets > Robot Kyle > Model > Robot Kyle を選択。[Inspector]ウィンドウ > [Rig]ボタン > Animation Type [Humanoid]に変更して[Apply]ボタンをクリック。
シーンに配置したキャラクター”Robot Kyle”を選択して[Inspector]ウィンドウ > Animator コンポーネントを確認すると、アバター”Robot KyleAvatar”が追加されてMechanimのキャラクターアニメーションを適用できるようになりました。
NPCをパスに沿って移動させるために必要なキャラクターコンポーネント NPC を追加します。
[Project]ウィンドウ > Assets > Robot Kyle > Model > Robot Kyle を選択してシーンに配置。[Inspector]ウィンドウ > [Add Component]ボタン > Adventure Creater > Charactars > NPC を選択。Animation settings を図のように変更します。
NPCのアニメーション用に新しいAnimator コンポーネントを作成します。
[Project]ウィンドウ > [Create]ボタン > Animator Controller を選択。ファイル名を”NPC”に変更したらダブルクリックして[Animator]ウィンドウを開きます。
アニメーションファイルはスタンダードアセットのファイルを使用します。メニュー:Assets > Import Package > Characters を選択。インポートができたら[Project]ウィンドウ > Assets > Standard Assets > Characters > ThirdPersonCharacter > Animation > HumanoidWalk を選択。
選択した HumanoidWalk ファイルを[Animator]ウィンドウにドラッグ&ドロップ。自動的にオレンジ色のDefault State に設定されます。
作成したAnimator Controller を NPC に割り当てます。Animator コンポーネント > Appry RootMotion のチェックを外しておきます。これで NPC (Script) コンポーネントのパラメータで移動速度を変更できます。
メニュー:Adventure Creator > Editors > Game Editor を選択。[Scene]タブ > Scene Prefabs > Navigation > [Path]を選択。
New prefab name: フィールドに”NPC”を入力して[Add new]ボタンをクリック。
ノード座標フィールドの右側にある[+]ボタンをクリックしてノードを追加、合計4つのノードを設定。キャラクターがノード間の移動する方法は Path type: [Is Random] に設定しました。
今回はゲームスタート時からNPCのアニメーションを再生することにしたいと思います。メニュー:Adventure Creator > Editors > Game Editor を選択。[Scene]タブ > Scene Cut Scenes > On start: フィールドの右側にある[Create]ボタンをクリック。アクションリスト OnStart が自動的に追加されます。
ActionList Editor の最初のノードを編集してキャラクターとパスの設定をします。
ゲームを再生するとパスに沿ってキャラクターが自動的に移動するようになっています。
移動速度がちょっと早いようなので調整しましょう。[Hierarchy]ウィンドウ > Robot Kyle を選択。[Inspector]ウィンドウ > NPC (Script)コンポーネント > Movement settings: > Walk speed scale: の値を 1 にしました。
そして、アニメーションの再生速度をわずかに遅くしました。[Project]ウィンドウ > Animator Controllerファイル NPC を選択。[Animator]ウィンドウ > HumanoidWalkノードを選択 > Speed を 0.7 に変更。
それから、キャラクターの足がわずかに床にめり込んでいたのでY座標を調整しました。
ここまでの内容をWebGLでビルドしてみました。(ダウンロードサイズ:約24MB)
こちらの記事で書いたスクリプトを使って、マウス左ドラッグで視点を移動できるようにしました。