UnityUnityメモ

Unity初心者向け!十字キーで向きを変えて移動するプレイヤー操作

Unity

1. はじめに

Unityを使ってゲームを開発する際、プレイヤーキャラクターを操作する方法は多種多様です。その中でも、十字キーでキャラクターを移動させるのは、初心者が最初に挑戦するのにぴったりの方法です。この機能を実装すれば、アクションゲームやRPGの基本的な操作感を簡単に作り出すことができます。

この記事では、Unity初心者でもわかりやすいように、シンプルなスクリプトを使って「十字キーでプレイヤーを動かす方法」を解説します。具体的には、以下のことを学べます:


  • Unityで基本的なプレイヤーオブジェクトを作成する方法
  • 十字キーの入力に応じてキャラクターが向きを変え、移動する仕組み
  • スクリプトの作成とアタッチの手順

この記事を最後まで読めば、シンプルなキャラクター操作の仕組みを理解し、自分で応用できるスキルが身につきます。それでは早速始めてみましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. プレイヤーオブジェクトを作成する

Unityで十字キー操作を行うには、まず操作対象となる「プレイヤーオブジェクト」を作成します。このセクションでは、立方体のオブジェクトをベースにして前方向を示すマーカーを追加する方法を解説します。


1. 立方体オブジェクトを作成する

  1. Unityエディターを開き、ヒエラルキー(Hierarchy)ウィンドウを右クリックします。
  2. メニューが表示されるので、3D ObjectCube を選択します。
  3. シーンに立方体(Cube)が追加されます。この立方体がプレイヤーキャラクターとして動くオブジェクトになります。

追加された「Cube」をわかりやすい名前に変更しましょう。例えば、「Player」と名前を変更することで、あとから管理しやすくなります。


2. 子オブジェクトを作成して前方向を示す

次に、プレイヤーの向きをわかりやすくするために、前方向を示す子オブジェクトを追加します。

  1. ヒエラルキー(Hierarchy)ウィンドウで「Player(Cube)」を選択します。
  2. 再度右クリックし、3D ObjectCylinder を選びます。
  3. 「Cylinder」が「Player」の子オブジェクトとして追加されます。
  4. 子オブジェクトが選択された状態で、インスペクター(Inspector)ウィンドウを開きます。
    • TransformScale を調整して形状を細くします(例: X: 0.1, Y: 1, Z: 0.1)。
    • Position を調整して「Player」の前方向に配置します(例: X: 0, Y: 0.5, Z: 0.6)。
  5. 「Cylinder」の名前を「ForwardIndicator」など、わかりやすいものに変更しておくと便利です。

3. 配置の確認

シーンビューで「Player」と「ForwardIndicator」の配置が適切か確認してください。
「ForwardIndicator」が「Player」の前方向(+Z軸)を指していることを確認すれば、このステップは完了です。


これで、プレイヤーオブジェクトの準備が整いました!次は、このオブジェクトを動かすためのスクリプトを作成していきましょう。



3. スクリプトを作成してアタッチする

ここでは、十字キーを使ってプレイヤー(Cube)を操作できるようにするスクリプトを作成し、それをオブジェクトにアタッチする方法を解説します。


スクリプトの作成方法

  1. プロジェクトウィンドウを開く
    Unityエディターの下部にあるプロジェクトウィンドウを見つけてください。
  2. 新しいスクリプトを作成する
    プロジェクトウィンドウで右クリックし、以下の手順を選びます:
    「Create」→「C# Script」
  3. スクリプトに名前を付ける
    新しいスクリプトに「CubeMove」と名前を付けます(この名前を必ず記録してください)。

スクリプトにコードを追加する

作成した「CubeMove」スクリプトをダブルクリックして、スクリプトエディター(通常はVisual Studio)が開きます。以下のコードをコピーして貼り付けてください:

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

public class CubeMove : MonoBehaviour
{
    private float speed = 3.0f;

    void Update()
    {
        if (Input.GetKey("up"))
        {
            transform.rotation = Quaternion.Euler(0, 0, 0);
            transform.position += transform.forward * speed * Time.deltaTime;
        }

        if (Input.GetKey("down"))
        {
            transform.rotation = Quaternion.Euler(0, 180, 0);
            transform.position += transform.forward * speed * Time.deltaTime;
        }

        if (Input.GetKey("right"))
        {
            transform.rotation = Quaternion.Euler(0, 90, 0);
            transform.position += transform.forward * speed * Time.deltaTime;
        }

        if (Input.GetKey("left"))
        {
            transform.rotation = Quaternion.Euler(0, 270, 0);
            transform.position += transform.forward * speed * Time.deltaTime;
        }
    }
}

コードのポイント:

  • Input.GetKey("up")などの部分でキー入力を検知し、オブジェクトを回転・移動させています。
  • speed変数は移動速度を設定しています。必要に応じて値を変更してみてください。

スクリプトをオブジェクトにアタッチする

  1. Cubeオブジェクトを選択
    ヒエラルキーウィンドウで、プレイヤーとして使う「Cube」をクリックして選択します。
  2. スクリプトをアタッチする
    プロジェクトウィンドウで「CubeMove」スクリプトを見つけ、それをドラッグしてCubeオブジェクトにドロップします。
  3. 確認する
    インスペクターウィンドウに「CubeMove (Script)」が追加されていれば、アタッチは成功です。

これで、十字キーを使ってCubeを操作できる準備が整いました!次はテストプレイをして、スクリプトが正しく動作するか確認しましょう。



4. テストプレイで動作確認

スクリプトをアタッチしたら、実際にプレイヤーオブジェクトが動くかどうか確認してみましょう。以下の手順でテストプレイを行います。


ステップ1: 再生モードを開始する

Unityエディターの上部にある「再生ボタン」(▶)をクリックします。
再生モードに切り替わると、ゲームビューで動作を確認できます。


ステップ2: キーボードで操作する

再生モード中にキーボードの矢印キーを押してみましょう。

  • ↑キーを押すと、プレイヤー(立方体)が前方に進みます。
  • ↓キーを押すと、後方に進みます。
  • →キーを押すと、右方向に進みます。
  • ←キーを押すと、左方向に進みます。

また、各方向に移動するときに、立方体がその方向に回転して向きを変えるのも確認できます。


ステップ3: 問題がないか確認する

次のポイントを確認してみてください:

  1. 正しい方向に回転しているか
    向きを変えて進む動作が正確に行われているか確認します。
  2. 動きがスムーズか
    プレイヤーオブジェクトの動きがカクついていないかチェックしましょう。
  3. 入力に応じた動作ができているか
    矢印キー以外のキーを押しても動作しないことを確認します。

ステップ4: 再生モードを終了する

テストが終わったら、再び「再生ボタン」(▶)をクリックして再生モードを終了します。
Unityでは、再生モード中に行った変更は保存されないため、設定変更は再生モードを終了してから行いましょう。


これでテストプレイは完了です!十字キー操作で立方体がスムーズに動いているのを確認できましたか?次のステップでは、さらに細かい調整や追加の機能を実装することもできます。自分だけのカスタマイズに挑戦してみましょう!



よくある質問(FAQ)

Q
十字キーで動かしてもプレイヤーが動きません。何が問題でしょうか?
A

以下の点を確認してください:

  • スクリプトが正しくオブジェクトにアタッチされているか。
  • スクリプトの名前とコード内のクラス名が一致しているか。
  • Unityエディタで「Playモード」にして動作確認を行っているか。
  • キー入力を受け取るために、Unityの「Edit」→「Project Settings」→「Input Manager」でキー設定が正しいか確認してください。
Q
プレイヤーの移動速度を変更するにはどうすればいいですか?
A

スクリプト内の speed 変数を変更することで移動速度を調整できます。例えば、以下のコードのように値を5.0fに変更すると、速度が速くなります:

private float speed = 5.0f;

変更後は保存してUnityに戻り、再生して確認してください。

Q
プレイヤーを別の形やモデルに変更したい場合はどうすればいいですか?
A

ヒエラルキーで「Cube」を削除し、新しい3Dオブジェクトやインポートしたモデルを追加してください。その後、新しいオブジェクトに「CubeMove」スクリプトをアタッチすれば動作します。また、前方向が分かりやすいようにモデルを配置してください。

おすすめのアセット

Action Adventure Kitは、Unityでアクションアドベンチャーゲームを作成するための包括的なテンプレートです。探索、戦闘、インベントリ管理、クエストシステムなど、豊富な機能を備えており、「ゼルダ」や「ダークソウル」風のゲームを作ることが可能です。ビジュアルスクリプティングを使用しており、初心者でも簡単にカスタマイズできます。キャラクターの動きや戦闘メカニクスがすでに構築されているため、効率的に開発が進められます。