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をチェックする
よくある質問(FAQ)
- Qプレイヤーがマウスの方向を向かないのですが?
- A
Camera
の参照が正しく設定されているか確認してください。また、Rigidbody2D
のRotation
が有効になっているかチェックしましょう。
- Qプレイヤーが移動しない場合の対処法は?
- A
Rigidbody2D
のGravity Scale
を 0 に設定し、スクリプトのmoveSpeed
値が適切に設定されているか確認してください。
- Qカメラをメインカメラ以外に変更するには?
- A
Camera.main
を使用するか、インスペクタでCamera
を手動でアタッチしてください。