【Unity】Cameraクラス
Camera
クラスは、Unityにおいてシーンをプレイヤーに表示するための非常に重要なコンポーネントです。この資料では、Camera
クラスの主なプロパティやメソッドについて解説し、具体的な使用例を紹介します。これにより、カメラの基本的な設定や操作方法を学ぶことができます。
1. Cameraクラスの主なプロパティ
1.1 transform
Camera
はTransform
コンポーネントを使用して位置や回転を制御します。以下のように、transform
を使ってカメラの位置を変更できます。
// カメラの位置を変更
Camera.main.transform.position = new Vector3(0, 10, -10);
1.2 fieldOfView
(視野角)
カメラの視野角を設定します。このプロパティを使ってズームインやズームアウトを制御できます。
// 視野角を設定 (標準的な値は60)
Camera.main.fieldOfView = 45;
1.3 orthographic
カメラの投影方法を制御します。true
にすると、カメラは2Dのような正投影になります。
// 正投影モードを有効にする
Camera.main.orthographic = true;
1.4 backgroundColor
カメラが描画しない部分に表示される背景色を設定します。
// 背景色を青に設定
Camera.main.backgroundColor = Color.blue;
1.5 clearFlags
カメラがフレームをレンダリングする前に何をクリアするかを指定します。
// 背景をスカイボックスでクリア
Camera.main.clearFlags = CameraClearFlags.Skybox;
1.6 depth
カメラの描画順を決定します。depth
の値が大きいカメラが後に描画されます。
// このカメラの描画順を設定
Camera.main.depth = 1;
1.7 cullingMask
カメラがどのレイヤーのオブジェクトを描画するかを制御します。
// 特定のレイヤー(例:Playerレイヤー)のみ描画
Camera.main.cullingMask = LayerMask.GetMask("Player");
2. Cameraクラスの主なメソッド
2.1 ScreenToWorldPoint
スクリーン座標をワールド座標に変換します。
// スクリーン座標をワールド座標に変換
Vector3 worldPoint = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 10));
2.2 WorldToScreenPoint
ワールド座標をスクリーン座標に変換します。
// ワールド座標をスクリーン座標に変換
Vector3 screenPoint = Camera.main.WorldToScreenPoint(new Vector3(0, 10, 0));
2.3 ViewportToWorldPoint
ビューポート座標をワールド座標に変換します。ビューポート座標は0から1の範囲で表されます。
// ビューポート座標をワールド座標に変換
Vector3 worldPoint = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 10));
2.4 WorldToViewportPoint
ワールド座標をビューポート座標に変換します。
// ワールド座標をビューポート座標に変換
Vector3 viewportPoint = Camera.main.WorldToViewportPoint(new Vector3(0, 10, 0));
2.5 ScreenPointToRay
ScreenPointToRay
は、指定されたスクリーン座標からシーン内に向けてレイ(仮想の光線)を飛ばすために使用されます。このメソッドは、特に3Dオブジェクトをクリックしたり、画面上の特定のポイントから何があるかを判断するのに便利です。
使用例
以下の例では、マウスクリック時にマウスのスクリーン位置からレイを飛ばし、そのレイが何かのオブジェクトにヒットした場合にそのオブジェクトを取得します。
void Update()
{
if (Input.GetMouseButtonDown(0)) // 左クリック
{
// マウスのスクリーン座標からレイを作成
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// レイがヒットしたオブジェクトを判定
if (Physics.Raycast(ray, out RaycastHit hit))
{
// ヒットしたオブジェクトの名前をコンソールに表示
Debug.Log("Hit object: " + hit.collider.name);
}
}
}
解説
Ray
: レイはスクリーンの2D座標からシーン内の3D空間に向かって飛ばされる直線です。ScreenPointToRay
メソッドは、そのレイを作成します。Raycast
: シーン内の物理オブジェクト(コライダー)に対してレイを飛ばし、ヒットしたかどうかを確認します。out RaycastHit hit
は、ヒットした場合にその詳細(例えば、ヒットしたオブジェクトの情報)を格納します。
3. 使用例
3.1 カメラの移動
カメラをプレイヤーに追従させる簡単な例です。
public class CameraFollow : MonoBehaviour
{
public Transform player;
void Update()
{
// カメラをプレイヤーに追従させる
transform.position = new Vector3(player.position.x, player.position.y, transform.position.z);
}
}
3.2 マウスホイールでズーム
マウスホイールの入力を使用してカメラのズームイン・アウトを制御します。
void Update()
{
// マウスホイールの入力を取得
float scroll = Input.GetAxis("Mouse ScrollWheel");
// カメラの視野角を変更してズームイン・アウト
Camera.main.fieldOfView -= scroll * 10f;
// 視野角の範囲を制限
Camera.main.fieldOfView = Mathf.Clamp(Camera.main.fieldOfView, 20f, 80f);
}
ディスカッション
コメント一覧
まだ、コメントがありません