コンテンツにスキップ

プレイヤーを作ってみよう

次はプレイヤーになるGameObject球(Sphere)を作ります。先ほどのCubeとは違う、ショートカットメニューを使った方法で作ってみましょう。

  1. Sphereの作成 Hierarchy Window で右クリックをして、表示されたメニューから 3D Object > Sphere を選択しましょう。すると Scene View の真ん中に球が表示されます。

  2. 位置の調整 球の Inspector の Position を確認し、変な位置に置かれていたら X: 0, Y: 5, Z: 0 に設定してください。Yを5に設定するのは、床に埋まらないようにするためです。

  3. 見た目を整える こちらの球にも、先ほどの手順(Assets > Create > Material)で新しいマテリアルを作って、好きな色をつけてあげましょう。

オブジェクトに物理法則を適用する「Rigidbody(リジッドボディ)」を追加します。

  1. Rigidbodyコンポーネントの追加

    球を選択し、Inspectorの一番下にある Add Component をクリックします。検索窓に「Rigidbody」と打ち込むか、Physics > Rigidbody を選んでください。

  2. 重力の設定を確認

    追加された Rigidbody コンポーネント内の Use Gravity にチェックが入っていることを確認してください。これで球に重力が働くようになります。

    たったこれだけの設定で、オブジェクトに自然な重力や衝突の動きがつくのはUnityのすごいところだね!

3. プレイヤーを動かすスクリプト(C#)を作ろう

Section titled “3. プレイヤーを動かすスクリプト(C#)を作ろう”

いよいよプログラミングの工程です。Unity 6では最新の入力方式(Input System)に対応したコードを使用します。

  1. Scriptsフォルダの作成

    Project Window で 右クリック > Create > Folder を選択し、名前を「Scripts」に変更します。

  2. スクリプトファイルの作成

    作成した Scripts フォルダを開き、その中で 右クリック > Create > Scripting > Empty C# Script を選択します。名前は「PlayerController」に変更してください。

  3. コードの書き換え 作成したファイルをダブルクリックしてエディタで開き、元からあるコードをすべて消して、下記のコードを貼り付けて保存(Ctrl+S / Cmd+S)してください。

    コピペでOKだけど、最低限コメント(//の後の文)を読んで「何をしているか」理解しておくと、自分の力になるよ!

    using UnityEngine;
    using UnityEngine.InputSystem;
    public class PlayerController : MonoBehaviour
    {
    // 転がる速さを調整する変数(Inspectorから変更可能)
    public float speed = 3f;
    // 物理演算コンポーネントを入れる変数
    private Rigidbody rb;
    void Start()
    {
    // ゲーム開始時に自分自身のRigidbodyを取得して変数に入れる
    rb = GetComponent<Rigidbody>();
    }
    void Update()
    {
    // キーボードの入力を取得(新しい方式)
    Vector2 moveInput = Vector2.zero;
    if (Keyboard.current != null)
    {
    // 上下左右のキー入力を数値(-1 ~ 1)として受け取ります
    float x = 0;
    float y = 0;
    if (Keyboard.current.wKey.isPressed || Keyboard.current.upArrowKey.isPressed) y = 1;
    if (Keyboard.current.sKey.isPressed || Keyboard.current.downArrowKey.isPressed) y = -1;
    if (Keyboard.current.aKey.isPressed || Keyboard.current.leftArrowKey.isPressed) x = -1;
    if (Keyboard.current.dKey.isPressed || Keyboard.current.rightArrowKey.isPressed) x = 1;
    moveInput = new Vector2(x, y);
    }
    // 入力方向を3D空間のベクトル(横・奥行き)に変換
    Vector3 movement = new Vector3(moveInput.x, 0, moveInput.y);
    // Rigidbodyに力を加えて玉を転がす
    rb.AddForce(movement * speed);
    }
    }

4. スクリプトを球に適用させよう

Section titled “4. スクリプトを球に適用させよう”

コードの編集が終わったら、Unityエディタに戻る前に必ず セーブ(保存) をしましょう。

  1. スクリプトの保存 コードエディタ(Visual Studio Codeなど)で、Ctrl + S(Macは Cmd + S)を押して保存します。

  2. シーン(ステージ)の保存 Unityエディタに戻ったら、エディタ上でも Ctrl + S(Macは Cmd + S)を押して、現在のシーンを保存しておきましょう。

    ※ 初めてセーブする場合 「Save Scene」というウィンドウが開きます。

    • 保存場所: Assets > Scenes フォルダの中を選択します。(おそらくセーブ画面で自動的に開いているはずです)
    • ファイル名: 「MainScene」など、好きな名前をつけて「保存」を押してください。
  3. スクリプトのアタッチ Hierarchyで「Sphere」をクリックしてInspectorを表示させます。作成したスクリプト(PlayerController)を、Inspectorの「Add Component」付近にドラッグ&ドロップして合体させます。

  4. テストプレイ! 画面上部の ▶︎(プレイボタン) を押して動かしてみましょう!十字キーやWASDキーで玉が転がれば成功です。

  5. 速さを調整する 玉の動きが速すぎたり遅すぎたりしたら、SphereのInspectorにある「Speed」の値を変更して、自分好みの操作感に調整してみてください。


このままだと玉がすぐに場外へ落ちてしまうので、4つの壁を設置しましょう。 GameObject > 3D Object > Cube を4つ作成し、名前と数値を以下の表に合わせて設定してください。

壁のトランスフォーム設定一覧

Section titled “壁のトランスフォーム設定一覧”
オブジェクト名Position (X, Y, Z)Scale (X, Y, Z)役割
Wall-1( 0, 1, 4.5 )( 10, 1, 1 )奥側の壁
Wall-2( 0, 1, -4.5 )( 10, 1, 1 )手前側の壁
Wall-3( 4.5, 1, 0 )( 1, 1, 10 )右側の壁
Wall-4( -4.5, 1, 0 )( 1, 1, 10 )左側の壁

マテリアルも作って、壁を好きな色に変えてみてね!

最後まで読み終えました! えらい!