Unityでプレイヤーがカメラの投影範囲(画面)外に出ないように制限する
こんにちは!!
今回は今制作中のシューティングゲームで使った、Unityでプレイヤーがカメラの投影範囲(画面)外に出ないように制限する方法を簡単にですが、解説してみたいと思います!!
目次
コードの実装例
カメラのビューポートに基づいて制限する
プレイヤーにアタッチしてあるスクリプトのUpdate()
内で、プレイヤーの位置をカメラのワールド座標範囲内に制限するコードを追加します。
void Update()
{
ClampPlayerToScreen(); // ←追加する処理
}
ClampPlayerToScreen() の実装例
private void ClampPlayerToScreen()
{
Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position);
// ビューポートの範囲(0〜1)を超えないように制限
viewPos.x = Mathf.Clamp(viewPos.x, 0.05f, 0.95f); // 少し内側に余裕を持たせる
viewPos.y = Mathf.Clamp(viewPos.y, 0.05f, 0.95f);
// ビューポート座標をワールド座標に戻して位置を更新
transform.position = Camera.main.ViewportToWorldPoint(viewPos);
}
解説
なぜ Viewport
を使うのか?
Viewport
は画面内での相対位置(0〜1)を扱うので、どんな解像度やアスペクト比でも一貫して制御できます。Mathf.Clamp
によって画面外へ出るのを防げます。
注意点
- カメラが動く場合もこの方法で追従可能です。
Mathf.Clamp()
の範囲 (0.05f〜0.95f
) は、キャラクターサイズに応じて微調整してください。
補足
カメラがプレイヤーを追従するタイプでなく固定カメラなら、Camera.main.ViewportToWorldPoint(new Vector3(0,0,0))
などを使って境界のワールド座標を取得し、Clampの最小・最大値に使う方法もあります。
まとめ
今回はUnityでプレイヤーがカメラの投影範囲(画面)外に出ないように制限する方法を解説しました!!
こんなに簡単に実装できてしまうことに驚いたので、共有させていただきました!!
それでは、良きUnityライフを!!
2025-06-19
0件のコメント
コメントはまだありません。最初の一人になりましょう!