Unityで一人称視点を作るとき、マウスと連動して回転するカメラの回転に制限をつけるのに少し戸惑ったので、解決方法を書き残しておきます。
ただカメラをマウスと連動させて回転させるだけなら、下のコードのスクリプトをカメラにアタッチすれば良いです。
private Vector3 angle;
void Start()
{
angle = this.gameObject.transform.localEulerAngles;
}
void Update()
{
angle.y += Input.GetAxis("Mouse X");
angle.x -= Input.GetAxis("Mouse Y");
this.gameObject.transform.localEulerAngles = angle;
}
カメラの回転に制限をつけるためには、ゲーム開始時のカメラの角度を取得し、その角度を基準に一定の範囲でカメラが回転するようにすれば良いです。
下のコードではゲーム開始時のカメラの向きから横方向に60度、縦方向には40度回転できるようにしています。
private Vector3 angle;
private Vector3 primary_angle;
void Start()
{
angle = this.gameObject.transform.localEulerAngles;
primary_angle = this.gameObject.transform.localEulerAngles;
}
void Update()
{
angle.y += Input.GetAxis("Mouse X");
if ( angle.y <= primary_angle.y - 30f ) {
angle.y = primary_angle.y - 30f;
}
if ( angle.y >= primary_angle.y + 30f ) {
angle.y = primary_angle.y + 30f;
}
angle.x -= Input.GetAxis("Mouse Y");
if ( angle.x <= primary_angle.x - 20f ) {
angle.x = primary_angle.x - 20f;
}
if ( angle.x >= primary_angle.x + 20f ) {
angle.x = primary_angle.x + 20f;
}
this.gameObject.transform.localEulerAngles = angle;
}