1. はじめに
Unityで2Dゲームを作るとき、プレイヤーキャラをマウスの方向に向けて動かしたいことはよくあります。例えば、ツインスティックシューターのようなシューティングゲームでは、プレイヤーはキーボードで移動しながら、マウスの方向に向かって弾を撃つことが求められます。
この記事では、プレイヤーオブジェクトをマウスの方向に回転させる方法を解説します。具体的には、Rigidbody2D を使ってスムーズに回転させる方法と、Camera.ScreenToWorldPoint を利用してマウスの位置を取得する方法を学びます。
また、C#スクリプトを使ってマウスの向きを取得し、それに応じてプレイヤーの回転を調整する実装を行います。初心者向けに詳しく解説するので、Unityの基本操作が少しわかる方なら誰でも簡単に実装できます!
最終的には、キーボードで移動しながら、マウスの方向を向くプレイヤーキャラクターを作成します。それでは、さっそくプレイヤーの作成から始めましょう!
2. プレイヤーオブジェクトの作成
まずは、マウスの方向に回転するプレイヤーオブジェクトを作成しましょう。UnityのHierarchy(ヒエラルキー)ウィンドウを使ってスプライトを配置し、プレイヤーの基本的な設定を行います。
① プレイヤーのスプライトを作成する
- Hierarchyウィンドウで右クリックします。
- **「3D Object」→「Sprite」**を選択します。
- 作成したスプライトの名前を 「Player」 に変更します。
このスプライトがプレイヤーキャラクターの見た目になります。あとで好きな画像を適用できますが、今回はデフォルトの白い四角(Sprite)でもOKです。
② Rigidbody2Dコンポーネントを追加
プレイヤーをスムーズに動かすために、Rigidbody2Dコンポーネントを追加します。
- 「Player」オブジェクトを選択します。
- Inspector(インスペクター)ウィンドウで「Add Component」ボタンをクリックします。
- **「Rigidbody2D」**を検索して追加します。
- 以下の設定を変更して、重力の影響を受けないようにします。
- Gravity Scale(重力の影響) →
0 - Constraints(制約) → 「Freeze Rotation Z」にチェックを入れる(プレイヤーが意図しない回転をしないように)
- Gravity Scale(重力の影響) →
③ プレイヤーの見た目を変更(任意)
デフォルトのスプライトのままでも問題ありませんが、よりゲームらしくするためにプレイヤーの見た目を変更してみましょう。
- 好きな2Dスプライト画像を用意します。(Unity Asset Storeの無料アセットを使ってもOK)
- Projectウィンドウにドラッグ&ドロップしてインポートします。
- 「Player」オブジェクトの「Sprite Renderer」コンポーネントで、「Sprite」の項目を変更します。
- お好みでサイズや色を調整してください。


ここまでで、マウスの方向に回転するプレイヤーオブジェクトの準備が完了しました!
次は、C#スクリプトを作成してプレイヤーを回転させる処理を実装していきます。
3. スクリプトの作成
次に、プレイヤーをマウスの方向に回転させるスクリプトを作成します。
C#スクリプトを使って、マウスの位置を取得し、プレイヤーの向きを変更できるようにします。
① 新しいスクリプトを作成
まずは、C#スクリプトを作成しましょう。
- Projectウィンドウで右クリックします。
- **「Create」→「C# Script」**を選択します。
- スクリプトの名前を 「PlayerMove」 に変更します。
② スクリプトにコードを入力
次に、「PlayerMove」スクリプトを開き、以下のコードを入力します。
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
float moveSpeed = 5; // 移動速度
[SerializeField] Rigidbody2D rb; // Rigidbody2Dの参照
Vector2 movement;
Vector2 mousePos;
[SerializeField] Camera camera; // メインカメラの参照
void Update()
{
// キーボードの入力を取得
movement.x = Input.GetAxisRaw("Horizontal");
movement.y = Input.GetAxisRaw("Vertical");
// マウスの位置を取得し、ワールド座標に変換
mousePos = camera.ScreenToWorldPoint(Input.mousePosition);
}
private void FixedUpdate()
{
// 移動処理
rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
// マウスの向きを取得
Vector2 lookDir = mousePos - rb.position;
// マウスの角度を取得する
float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
rb.rotation = angle;
}
}
③ コードの解説
このスクリプトでは、以下のような処理を行っています。
- キーボードの入力を取得して移動
Input.GetAxisRaw("Horizontal")とInput.GetAxisRaw("Vertical")を使って、プレイヤーの移動方向を取得します。 - マウスの位置を取得
camera.ScreenToWorldPoint(Input.mousePosition)を使い、マウスの画面上の座標をワールド座標に変換します。 - プレイヤーをマウスの方向に回転
Vector2 lookDir = mousePos - rb.position;でプレイヤーとマウスの位置の差分を求めます。Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Degを使い、角度を求めます。rb.rotation = angle;でプレイヤーを回転させます。

これで、プレイヤーの移動とマウスの方向を向く処理ができました!
次は、このスクリプトをプレイヤーに適用して、動作確認を行います。
4. スクリプトのアタッチ
作成した PlayerMove スクリプトを プレイヤーオブジェクトに適用 して、動作させる準備をしましょう。
① スクリプトをプレイヤーに適用
- 「Hierarchy」ウィンドウで「Player」オブジェクトを選択 します。
- 作成した「PlayerMove」スクリプトを「Player」オブジェクトにドラッグ&ドロップ します。
→ これでスクリプトがアタッチされました!
② Rigidbody2D をスクリプトに設定
スクリプト内で Rigidbody2D を参照するので、インスペクターから手動で設定 します。
- 「Player」オブジェクトの「Inspector」ウィンドウ」を開く
PlayerMoveスクリプトの中に 「Rb」(Rigidbody2D) の項目があることを確認- 「Rb」欄に「Player」の Rigidbody2D をドラッグ&ドロップ
③ Camera をスクリプトに設定
マウスのワールド座標を取得するために、カメラの参照を設定します。
- 「Player」オブジェクトの「Inspector」ウィンドウ」を開く
PlayerMoveスクリプト内の 「Camera」項目を確認- 「Camera.main」をドラッグ&ドロップ(または
MainCameraを手動で設定)
④ 設定の最終チェック
- 「Player」オブジェクトに
Rigidbody2Dが追加されているか - 「PlayerMove」スクリプトが正しくアタッチされているか
- 「Rigidbody2D」と「Camera」の参照が設定されているか


これでスクリプトの設定は完了しました!
次は、実際にゲームを実行して、プレイヤーがマウスの方向を向くか確認 してみましょう。
5. 動作確認
ここまでで、プレイヤーオブジェクトの作成とスクリプトの設定が完了しました。
最後に、ゲームを実行してプレイヤーがマウスの方向を向くかを確認しましょう。
① ゲームを実行
- Unityエディター上部の「▶(再生ボタン)」をクリック してゲームを実行します。
- キーボード(WASDキー or 矢印キー)で移動 できるか確認します。
- マウスを動かして、プレイヤーがマウスの方向を向くか確認 します。
② 正常な動作のチェック
✅ プレイヤーがスムーズに移動する
✅ マウスを動かすと、プレイヤーがその方向に回転する
✅ プレイヤーの動きに違和感がない(回転が滑らかである)
③改善ポイント(応用編)
- スムーズな回転を実装する
→Quaternion.Lerp()を使うことで、より滑らかに回転させることができます。 - 移動アニメーションを追加する
→Animatorを使って、移動時にアニメーションを適用できます。 - クリックで攻撃できるようにする
→Instantiate()を使って弾を発射するスクリプトを追加すれば、シューティングゲームの基礎が作れます。
まとめ
✅ プレイヤーがマウスの方向に回転するスクリプトが動作した!
✅ キーボードで移動しながら、マウスで方向を調整できた!
これで、Unity2Dでプレイヤーをマウスの方向に回転させる方法が完成しました!
この仕組みを活用すれば、ツインスティックシューティングやアクションゲームを簡単に作ることができます。
これでプレイヤーをマウスの方向に回転させる処理が完成しました!
次のステップとして、シューティング機能を追加 すれば、より本格的なゲームになります。
自作するのもいいですが、「Easy Shooting」 ならクリックで攻撃機能を簡単に実装できます!
🎯 Easy Shootingをチェックする
おすすめのアセット
あわせて読みたい
プレイヤーの動きや回転の実装に関連する記事をもっと知りたい方は、こちらもチェック!
- 🔄 Unity初心者必見!クリック位置にオブジェクトを向ける方法を徹底解説
→ プレイヤーやオブジェクトをクリックした方向に向けたいときの基本が学べます。 - 🧭 Unity初心者必見!十字キーで向きを変えて移動するプレイヤー操作
→ キーボード操作でプレイヤーの向きを切り替える方法を知りたい方におすすめ。 - 🎯 Unityで簡単!クリックした方向にジャンプ!簡単スクリプトで実装する方法
→ マウスクリックに応じたジャンプ動作の実装にチャレンジしたい方へ。 - 🧲 Unity初心者でもできる!クリックした位置に応じてボールを飛ばす方法
→ マウス位置を利用した物体移動の処理を学べます。 - 🌀 Unityでマウスカーソルの方向にオブジェクトを回転!簡単チュートリアル
→ 3D空間でのマウス方向回転を扱いたい人向けの記事です。
よくある質問(FAQ)
- Qプレイヤーがマウスの方向を向かないのですが?
- A
Cameraの参照が正しく設定されているか確認してください。また、Rigidbody2DのRotationが有効になっているかチェックしましょう。
- Qプレイヤーが移動しない場合の対処法は?
- A
Rigidbody2DのGravity Scaleを 0 に設定し、スクリプトのmoveSpeed値が適切に設定されているか確認してください。
- Qカメラをメインカメラ以外に変更するには?
- A
Camera.mainを使用するか、インスペクタでCameraを手動でアタッチしてください。








※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。