UnityUnityメモ

Unityで簡単なプレイヤー操作を実装!左右キーで回転&上下キーで移動する方法

Unity

1. はじめに

Unityを使ってオブジェクトを動かす仕組みを学びたいと思ったことはありませんか?この記事では、上下キーでオブジェクトを前後に移動させ、左右キーで回転させるシンプルな操作を実装する方法をご紹介します。初心者の方でも安心して取り組めるよう、具体的な手順をステップごとに解説していきます!

今回の例では、操作対象として「キューブ」を使用します。キューブはUnityの基本機能で簡単に作成できるため、初心者の方にぴったりです。このチュートリアルを通じて、Unityのスクリプト作成やオブジェクトの操作についての基本をしっかり身に付けましょう。

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



2. スクリプトの作成

次に、プレイヤー操作を実現するスクリプトを記述していきます。このスクリプトでは、上下キーで前後に移動し、左右キーでオブジェクトを回転させる機能を実装します。

スクリプトを作成する

  1. プロジェクトウィンドウを右クリックし、
    **「Create」→「C# Script」**を選択してください。
  2. スクリプトに「MoveObject」と名前を付けます。
  3. 作成したスクリプトをダブルクリックして開き、コードを記述していきましょう。

スクリプトのコード

以下のコードをコピーして、スクリプトに貼り付けてください。

using UnityEngine;

public class MoveObject : MonoBehaviour
{
    // 移動速度と回転速度を設定
    public float moveSpeed = 5f;
    public float rotationSpeed = 100f;

    void Update()
    {
        // 上下キーで前後に移動
        float move = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime;
        transform.Translate(0, 0, move);

        // 左右キーで回転
        float rotation = Input.GetAxis("Horizontal") * rotationSpeed * Time.deltaTime;
        transform.Rotate(0, rotation, 0);
    }
}

コードの解説

  1. 移動速度と回転速度の設定
    public float moveSpeedpublic float rotationSpeed で、それぞれ移動速度と回転速度を設定します。これらの値はUnityエディター内で調整可能です。
  2. Updateメソッド
    Unityでは Update メソッドが毎フレーム呼び出されます。この中でプレイヤーの入力を取得してオブジェクトを動かします。
  3. 上下キーで移動
    • Input.GetAxis("Vertical") を使い、上下キーの入力を取得します。
    • transform.Translate を使って、前後に移動します。
  4. 左右キーで回転
    • Input.GetAxis("Horizontal") を使い、左右キーの入力を取得します。
    • transform.Rotate を使って、オブジェクトを回転させます。

注意ポイント

  • 上下キーや左右キーの入力はUnityの Input Manager で設定されています。デフォルトでは問題なく動作しますが、変更している場合は再確認してください。
  • Time.deltaTime を使用することで、移動や回転がフレームレートに依存せず、スムーズに動作します。

これでスクリプトの準備は完了です!次は、このスクリプトをオブジェクトにアタッチして実際に動作を確認しましょう。



3. スクリプトをオブジェクトにアタッチ

さて、スクリプトが完成したら、次はそれをオブジェクトにアタッチして実際に動かせるようにしましょう!以下の手順に従ってください。

手順 1: ヒエラルキーウィンドウでオブジェクトを選択

まず、ヒエラルキー(Hierarchy)ウィンドウを確認しましょう。ここには、シーン内のすべてのオブジェクトが一覧表示されています。
ここで動かしたいオブジェクト(この記事ではキューブ)をクリックして選択します。

手順 2: スクリプトをドラッグ&ドロップ

次に、作成したスクリプトをオブジェクトにアタッチします。

  1. プロジェクトウィンドウで「MoveObject」スクリプトを見つけてください。
  2. そのスクリプトをドラッグして、ヒエラルキーウィンドウ内の選択したオブジェクトにドロップします。

手順 3: インスペクターウィンドウを確認

正しくアタッチされると、インスペクター(Inspector)ウィンドウに「MoveObject」という名前のコンポーネントが追加されているはずです。この中で、以下のようなプロパティが確認できます:

  • Move Speed(移動速度)
  • Rotation Speed(回転速度)

これらの値を自由に変更することで、移動や回転のスピードを調整することができます。

これで、スクリプトをオブジェクトにアタッチする作業は完了です!次は、スムーズに動くか試してみましょう!



4. 実際に動かしてみよう

さて、スクリプトの準備ができたら、実際にオブジェクトを動かしてみましょう!ここでは、Unityエディターの「プレイモード」を使って、スクリプトが正しく動作するかを確認します。


1. プレイモードを開始する

まずは、Unityエディターの上部にある「再生ボタン(▶)」をクリックしてプレイモードを開始してください。
すると、シーンビューが実行中のゲームビューに切り替わります。


2. キーボードで操作してみる

プレイモード中に以下の操作を試してみてください。

  • 上下キー(↑/↓): キューブが前後に動くか確認しましょう。
  • 左右キー(←/→): キューブがその場で回転するか確認しましょう。

動作が想定通りであれば成功です!オブジェクトが滑らかに動くのを見て、Unityのスクリプトの力を実感してください。


3. よくあるトラブルと解決方法

もし動作しない場合は、以下を確認してみてください。

  • スクリプトがアタッチされているか?
    ヒエラルキーでオブジェクトを選択し、インスペクターに「MoveObject」スクリプトが表示されているか確認しましょう。
  • 入力が反応しない場合:
    Unityの「Edit」→「Project Settings」→「Input Manager」で、「Vertical」や「Horizontal」の設定を確認してください。
  • コンソールにエラーが出ている場合:
    Unityエディターの下部にある「Console」タブを確認し、エラー内容をチェックしましょう。スペルミスやタイポがないか、スクリプトを見直してください。

4. スクリプトのカスタマイズ

操作感を調整したい場合は、以下のパラメーターを変更することで、速度や回転の速さを調整できます。

  • moveSpeed: 前後移動の速度
  • rotationSpeed: 回転の速さ

インスペクターでこれらの値を変更するだけで、すぐに反映されます!


これで、上下キーで前後に動き、左右キーで回転するプレイヤー操作が完成です。次は、他のオブジェクトを動かしたり、カメラを追従させる機能を追加したりして、さらに楽しいプロジェクトに挑戦してみましょう!



よくある質問

Q
スクリプトを複数のオブジェクトで使うには?
A

このスクリプトは、アタッチしたオブジェクトごとに個別に動作します。そのため、別のオブジェクトでも同じスクリプトを使用したい場合は、スクリプトを該当オブジェクトにドラッグ&ドロップしてアタッチするだけでOKです。また、各オブジェクトごとに異なる移動速度や回転速度を設定したい場合は、インスペクターからmoveSpeedrotationSpeedの値を調整してください。

Q
移動速度や回転速度を調整する方法は?
A

移動速度や回転速度は、スクリプト内のmoveSpeedrotationSpeed変数でコントロールされています。これらの値はインスペクターで直接編集可能です。例えば、移動速度を10にしたい場合は、以下の手順で設定を変更してください:

  1. 対象のオブジェクトをヒエラルキーで選択する。
  2. インスペクターウィンドウ内のMoveObjectスクリプトを確認。
  3. Move Speedに「10」と入力。

同様に、Rotation Speedも同じ手順で調整できます。

Q
入力方式を変更するには?
A

現在のスクリプトはInput.GetAxisを使用して、キーボードの矢印キーやWASDキーに対応しています。他の入力方式を使用したい場合は、以下の変更を加えられます:

  1. マウス操作に対応させる
    例えば、マウスのX軸の動きに回転を連動させる場合:float rotation = Input.GetAxis("Mouse X") * rotationSpeed * Time.deltaTime; transform.Rotate(0, rotation, 0);
  2. カスタムキーに対応させる
    特定のキーを直接指定する場合は、Input.GetKeyを使用します:if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0, 0, moveSpeed * Time.deltaTime); }
  3. ゲームパッドに対応させる
    UnityのInput Systemを利用することで、コントローラーのアナログスティックなどにも対応可能です。詳細はUnity公式ドキュメントを参考にしてください。

おすすめのアセット

「Runner Action Animation Pack」は、Unityでランナー系のゲームに最適なアニメーションパックです。このパックには、ランニングやジャンプ、スライディングなど、ランナーゲームに必要な基本動作が豊富に揃っており、スムーズなキャラクターの動きを簡単に実現できます。また、すべてのアニメーションは流れるようにシームレスに繋がり、リアリティのある動きを再現できるのが特徴です。