Roll-a-ball の制作(7) C#でPlayerオブジェクトの動作を記述する
Unity公式サイトのチュートリアルに沿って、
Roll a ballというサンプルゲームを制作する7回目です。
前回は、Unityエディタでスクリプトを編集するための準備として、
C#開発環境Visual Studioのインストールおよび、UnityエディタとVisual Studioの連携を行いました。
今回はC#でPlayerオブジェクトの動作を記述していきます。
PlayerControllerについて
最初に前回作成したPlayerControllerを開いてください。
スクリプトを起動したときに一度だけ実行されるのがStart() メソッド、
フレームごとに呼び出されるのがUpdate() メソッド
です。
次に、このソースコード以下のように修正します。
上記のソースコードについて簡単に説明します。
最初にStrat()メソッドでは、
rd = GetComponent<RigidBody>();
としています。
これによって、以降変数rbを通じてRigidBodyのコンポーネントにアクセスできるようになります。
さて、Unityには、
何かアクションを起こしたときに呼び出されるイベントトリガーという機能があります。
OnMoveはこのUnityのイベントトリガーで呼び出される関数の1つで、Moveイベントが発生したとき、つまりオブジェクトが動いたときに呼び出される関数です。
OnMove()関数では、入力された値をmovementXとmovementYの変数にそれぞれ格納します。
デフォルトで用意されているUpdate()とFIxedUpdate()の違いは、
前者がフレームごとに呼び出されるのに対して、後者は一定時間ごとに呼び出されるというところです。
FixedUpdate()の中で、
rd.AddForce(movement);
としていますが、これはRigidbody に力を加える処理です。
このことによって、Playerオブジェクトは入力された値で動くようになります。
実際にPlayerオブジェクトを動かしてみる
実際にPlayerオブジェクトを動かしてみます。
Unityエディタの▶のボタンを押して再生モードにします。
キーボードの矢印キーでPlayerが動いたでしょうか?
(注!)動かなかった人は、Input Systemでキーボードが通知されていない可能性があります。プロジェクト設定のInput System Packageでデバイスを追加しておくとキーボードがきくようになるかもです。
今回はここまでにします。
次回はPlayerオブジェクトの移動スピードを変更していきます。
#Unity #ゲーム制作