プレイヤーを動かす

Tutorial

Beginner

+10XP

30 mins

(100)

Unity Technologies

プレイヤーを動かす

2 回目の「玉転がし」(Roll-a-Ball)チュートリアルでは、以下のことを行います:

  • プレイヤーのスフィアに Rigidbody を追加して、Unity の物理演算エンジンを使えるようにする
  • C# で独自の PlayerController スクリプトを書き、プレイヤーの入力にスフィアが反応するようにする
  • スクリプトのテストとエラーの修正

Resources

1. はじめる前に

このチュートリアルを使用するには、ボールとその上を転がるサーフェスを含むシーンを持つ Unity プロジェクトが必要です。これらをまだ作成していない場合は、チュートリアル『Setting up the Game』から始めてください。 .

下の最初の動画では、ゲーム領域の表面でボールを転がしています。

2. プレイヤーにリジッドボディを追加する

3. Input System パッケージのインストール

4. Player Input コンポーネントの追加

重要:この動画をご覧になった後は、以下の手順で操作してください。動画では紹介されていないアクションもあります。

Download Transcript

このプロセスを振り返ってみましょう:

1. Hierarchy で、Player ゲームオブジェクトを選択します。

2. Inspector で、Add Component を選択します。続いて、Player Input を検索して選択します。

3. Inspector で、先ほど作成した Player Input コンポーネントの Create Actions を選択します(この手順は、動画では表示されません)。

4. 動画にあるように、Input という名前の新しいフォルダーを作成し、アセットの名前を InputActions にします。

重要:以下の手順は、動画では紹介されていません。

5. Project ウィンドウで、作成したばかりのフォルダーに、この新しい InputActions アセットを配置します。

6. Project ウィンドウの InputActions アセットを、Player ゲームオブジェクト上の Player Input コンポーネントの Actions プロパティにドラッグするか、Actions プロパティの丸いアイコンを使って InputActions アセットを選択します。

完成した Player Input コンポーネントは、動画の最後、1:48 に表示されているコンポーネントのようになります。

5. スクリプトの新規作成

6. OnMove 関数の宣言を記述する

7. 入力データのプレーヤーへの適用

8. プレーヤーに力を加える

9. プレイヤーの移動速度の修正

Download Transcript

PlayerController スクリプト

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerController : MonoBehaviour
{
    public float speed = 0;

    private Rigidbody rb;

    private float movementX;
    private float movementY;

    // Start is called before the first frame update
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    private void OnMove(InputValue movementValue)
    {
        Vector2 movementVector = movementValue.Get<Vector2>();

        movementX = movementVector.x;
        movementY = movementVector.y;
    }

    private void FixedUpdate()
    {
        Vector3 movement = new Vector3(movementX, 0.0f, movementY);

        rb.AddForce(movement * speed);
    }

}

Complete this Tutorial