第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の高さだけを変えます。一度に複数の値を変えず、何が結果に影響したか説明します。
チェックリスト
- 上下角が指定範囲で止まる
- 距離と注視点の高さを別々に変更して比較した
- 壁際でのカメラ補助と、プレイヤーの歩行処理を区別できる