【第38回】〜Easy Character Movement〜キャラクターの動きを簡単実装
Easy Character Movementとは
Oscar Graciánよりリリースされている、
ジャンプ、しゃがみ、移動なキャラクターの動きを簡単に実装できるアセット
全般的なキャラクター操作をリジッドボディベースで実装可能なコントローラー。
どんな人にオススメ?
- キャラクターの移動を実装したい
- スクリプトだと分からないor時間短縮したい
- トップダウンやFPSなど3Dゲームでプレイヤーを操作したい
- ジャンプやしゃがみもサポートしててほしい
使ってみた
キャラクターの移動を実装するのって、
Unityであれば簡単なコードで可能かとは思うんですが、
自分もいまだにちょこちょこ確認しながらだし、
できるならサッと実装してどんどん作業進めていきたいですよね。
このアセットならコントロールの部分は任せれそうです。
まず2Dでのデモシーンを触ってみます。↓
A,Dキーで横移動、スペースでジャンプができるようになっています。
空中でもう一度スペースを押せば二段ジャンプになります。
次に3Dのデモをみます。
まずベーシックなBase Character Controllerというモード。↓
WASDで移動、スペースでジャンプですね。
次はBase Agent controller↓
右クリックしたポイントまで自動でキャラクターが移動します。
次はBase First Person Controller↓
FPS視点になります。
次はEthan Character↓
Root Motionを切り替えて試せるようになってました。
falseにすると入力そのまま移動するって感じですね。
次はEthan Agent↓
右クリックでクリックした地点へ移動します。
Root Motionによって挙動が違いますね。
最後にEthan Platformer↓
二段ジャンプができるようになってるぐらいかな・・・?
とりあえずWASDで移動とジャンプ、しゃがみというのがスペースとCキーでできる!
というのが一番でかい要素ですかね。
それではどのように実装されているのかみてみたいと思います!
デモシーンのひとつをお借りして、
既に配置されているキャラクターは一旦非表示します。
ヒエラルキーの+からECMという欄が追加されているので、
その中にあるCharacterを選択します。
そのほかの2つのパターンもここで生成できますね。
そうすると、
モデルはついてませんがスクリプトがいくつかと、コライダーとリジッドボディがついたオブジェクトが生成されました。
一旦動くのか確認したいので、
アセットで用意されているモデルのプレハブを子オブジェクトとして配置します。
とりあえず再生してみます!
動いてジャンプはできましたが、しゃがみやシフトで歩くなどが機能してなさそうです。
どうやらモデル自体にCrouching Model scalerというスクリプトを貼り付ける必要があるようです。
Controllerのところに元々生成していたECM_Characterオブジェクトを、
Model Transformのところはモデル自身をアタッチします。
そうするとしゃがむように潰れてくれました笑
シフトで歩くなどはどうやら違うControllerでの機能の様なので、
次は人型のモデルをつかって実装してみたいと思います。
お相撲さんのモデルを子オブジェクトとして配置して、
Root Motion Controllerスクリプトを貼り付けます。
Animatorのコントローラーはアセットで用意されているものを選択します。
お相撲さんは動くのか・・・!
再生してみます↓
動きました!
左シフトで歩く動作にもなっています。
あとは各Charactor Controllerのパラメーターを変えてあげれば、
スピードだったりジャンプ力などの動作を編集できますね。
なので流れとしては、
まずはヒエラルキーの+からControllerを生成してモデルを子オブジェクトにして、
モデルの方に適したRoot Motion Controllerスクリプトなどのコントローラーも貼り付けます。
アニメーションはアセットで用意されたものを使って、アニメーションを差し替えるというのが楽そうです。
それぐらいで簡単な移動操作が実装できるので、
慣れちゃえば簡単に手早く実装ができますね!
まとめ
いかがでしたでしょうか?
気になった方是非アセットストアでチェックしてみてください!
こちら↓
2.5Dや3Dゲームを作る際に、複雑なアクションとかでなければ
このアセットでキャラクターの操作を実装してあげるとかなり作業の負担を減らせるのでは無いでしょうか。
使えるものは使っていきましょう!笑
今回はこんな感じで!
それでは💤