Unityでキャラクターを移動する為の準備と概要(スクリプトを書く前に)

今回は前回アセットストアから入手したキャラクターをキーボードのキーを押した時に移動出来るようにしてみます。

とりあえず前回までに登場した(シーンに配置した)「takasi」君を削除しておきます。(ああ無情)
そしてArmy01をシーンに配置し、名前を「masasi」君にしておきます。

キャラクターをシーンに配置する

スポンサーリンク

CharacterControllerコンポーネントの追加と設定の変更

このプレハブにはすでにアニメーションが設定されていて一度だけ歩く動作をして、終わったらそのまま止まります。
アニメーションに関しては次回やるのでそれまでは置いておいてください。

今回はアニメーションをせず、とりあえずキーボードを打った時にキャラクターが移動するところまで作ってみます。

キャラクターの移動機能を「masasi」君に設定します。
キャラクターの移動機能はCharacter Controllerという名前で、
キャラクター(移動させたい物)にコンポーネント(機能)を設定とパラメータを変更することで移動に関する制限や当たり判定の範囲等を指定する事が出来るようになります。

「masasi」君を選択した状態でインスペクタの所を見てください。
「masasi」君に設定された機能一覧が見れます。

さきほど説明にあったアニメーションの機能(Animator)も設定されている事が確認出来ます。
それでは以下の画像のように選択しCharacter Controllerを設定してみましょう。

CharacterControllerを取りつける

Add Component→Physics→CharacterControllerを選択します。

CharacterControllerの項目の設定

「masasi」君のインスペクタ上にCharacter Controllerが現れました。
Slope Limitは登れる最大角度
Step Offsetは段差の高さ

になります。
坂のように角度がある所で登っていける場所がSlope Limitの角度までです。
Step Offsetの値の段差までは登れるようになります。それより大きい段差には移動出来ません。
Unityでは1が1mなのでStep Offsetが0.3であれば30cmの段差であれば段差を移動出来ます。

このようにパラメータを指定する事でキャラクターが超えられる段差等の設定が出来ます。
下の方にあるCenter、Radius、Heightは当たり判定の範囲(コライダ)の設定になり、
その範囲がScene画面上の緑色の範囲で表現されています。

その範囲がキャラクターと合うようにパラメータを調整します。

コライダの大きさの調整

コライダのサイズを調整した後

緑色の範囲がキャラクターと重なっているのがわかると思います。

この部分が当たり判定となり、他の物と接触したかどうかの判定範囲となります。

これでキャラクター移動コンポーネントの設定が終わったので、キーボードを押した時に移動するスクリプトをプログラミングしていきます。

スクリプトの作り方とキャラクター移動の方法

Unityで使用出来るスクリプトはC#、JavaScriptです。
わたくしのブログではJavaScriptを使用していきます。
C#で作りたい方もそれほど変わらないので読み替える事が出来ると思います。

JavaScriptで記述するとインテリジェンス機能?がデフォルトで使えないのでスクリプトを組む時に検索候補が出てきません。
これは結構痛い・・・・・(^_^;)

JavaScriptも通常のJavaScriptとは少々勝手が違いますが、扱った事がある人ならば問題はないかと思います。
まずはAssetsエリアに新しいフォルダを作成し名前を「script」として、スクリプトファイルはそこに一括で入れていこうかと思います。

スクリプトファイルの作り方

上画面のようにscriptフォルダ内で右クリック→Create→Javascriptを選択します。
ファイル名を「move」に変更しておきます。

スクリプトを編集するエディタは変更する事が出来ます。

スクリプトの編集エディタを変更する

上画面のようにEdit→Preferencesと選択し、

エディタの選択画面

上画面のようにExternal ToolsのExternal Script Editorの所を変更します。
わたくしはMono Developを使っていきます。

「move」ファイルをダブルクリックするとスクリプト編集の為のエディタが起動します。
これでスクリプトの作成や編集が可能となりました。

それではさっそくキャラクター移動のスクリプトを記述していきたい所ですが、
まずはキャラクターを移動させる為に何をするべきかを考えていきます。

キャラクター移動機能はCharacter Controllerが持っていますので、
そのCharacter Controllerの機能をスクリプトで取得します。
取得したら移動のキーが押された時にCharacter Controllerの機能を使用してキャラクターを移動させる。

という事になります。
まとめると

  • Character Controllerの機能の取得
  • 移動キーが押されたらCharacter Controllerの機能を使って移動させる

となります。
Character Controllerの機能を取得をするのは最初に1回だけにし、それを保存し
必要になったら使うというのがいいと思います。

一方、
移動キーが押されたらCharacter Controllerの機能を使って移動させる
為にはキーが押されたかどうかを逐一確認する必要があります。

これらの機能を作る前にまずはスクリプトを作成した時に最初から記入されているスクリプトを見てみましょう。

スクリプトエディタを開いた時にデフォルトで記述されている内容

function 関数名() {
}

となっていますが、これは関数と言い、特定の機能をまとめた処理の事を言います。
関数は自作出来ます。
が、Unity側で最初から用意されている関数もあり、その一部が

StartとUpdate

という名前になります。

Startはアクティブなオブジェクトが登場した時1回実行
Updateはオブジェクトが登場している間、一定時間毎に実行

となります。

アクティブというのはそのスクリプトが設定されているゲームオブジェクトが有効であるかどうかという事です。
シーンに設置はしてるけど使える状態にしていない場合は非アクティブです。現時点では無視しておいてください。

Character Controller機能の取得はStart内で
キーを押した時の移動に関する処理はUpdate内に記述すればいいということになります。

ではスクリプトを書いてみましょう!
と思ったんですが、長くなったのでまた次回。