
プレイヤーを動かす
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 コンポーネントの追加
重要:この動画をご覧になった後は、以下の手順で操作してください。動画では紹介されていないアクションもあります。
このプロセスを振り返ってみましょう:
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. プレイヤーの移動速度の修正
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);
}
}