Skip to content
第08回 3D探索1

3 / 4 周回カメラの角度と距離を調整する ​

このステップの目的

注視点を基準にカメラを配置し、上下角の制限と距離による見え方を比較する

角度を保持する ​

OrbitCamera.Turn(Vector2 degrees)を編集します。degreesは入力処理が角度へ換算した差分です。yawは左右、pitchは上下の角度です。

csharp
yaw = Mathf.Repeat(yaw + degrees.x, 360f);
pitch = Mathf.Clamp(pitch - degrees.y, minPitch, maxPitch);

Repeatは角度を0以上360未満へ戻し、Clampは上下角を範囲内へ制限します。minPitchが-30、maxPitchが65なら、変更後のpitchが70になる入力でも65で止まります。下限と上限の両方を試してください。

配置処理を読む ​

OrbitCamera.Placeの中心となる計算は次の部分です。実際の関数には、遮蔽物が近い場合にカメラを手前へ寄せる補助処理も含まれます。

csharp
Quaternion rotation = Quaternion.Euler(pitch, yaw, 0f);
Vector3 desired = Focus + rotation * new Vector3(shoulder, 0f, -distance);

Focusはプレイヤー位置にfocusOffsetを加えた注視点です。Quaternion.Eulerは保持した角度から回転を作ります。回転をオフセットへ掛けることで、注視点から一定距離の周囲へ配置します。Quaternionの内部計算は提供機能を利用します。

distanceだけを変え、近い場合と遠い場合の足元・進行先の見え方を比較します。次にfocusOffsetの高さだけを変えます。一度に複数の値を変えず、何が結果に影響したか説明します。

チェックリスト
  • 上下角が指定範囲で止まる
  • 距離と注視点の高さを別々に変更して比較した
  • 壁際でのカメラ補助と、プレイヤーの歩行処理を区別できる