Unity3D 기반 카메라 기능의 실현 (3) - 1인칭 카메라 (FPS)

1591 단어 Unity3D
게임 개발에서 캐릭터의 시야가 마우스 위치인 1인칭 카메라(FPS)를 따라가는 것은 흔히 볼 수 있는 수요이다. 우리는 오늘 이 기능을 실현하고자 한다.
카메라에 마운트하면 됩니다. 코드는 다음과 같습니다.
using UnityEngine;
using System.Collections;
//   
public enum RotationAxes { 
	MouseXAndY = 0, MouseX = 1, MouseY = 2 
}

public class MouseLook : MonoBehaviour {
	//x (  )  
	public float sensitivityX = 15F;
	//y (  )  
	public float sensitivityY = 15F;
	//x (  )     
	public float minimumX = -360F;
	//x (  )     
	public float maximumX = 360F;
	//y (  )     
	public float minimumY = -60F;
	//y (  )     
	public float maximumY = 60F;
    //   
	public RotationAxes axes = RotationAxes.MouseXAndY;
	private float rotationY = 0F;

	void Update ()
	{
		if (axes == RotationAxes.MouseXAndY)
		{
			float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
			
			rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
			rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
			
			transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
		}
		else if (axes == RotationAxes.MouseX)
		{
			transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
		}
		else if (axes == RotationAxes.MouseY)
		{
			rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
			rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
			
			transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
		}
	}
	
	void Start ()
	{
		//          
		if (GetComponent())
			GetComponent().freezeRotation = true;
	}
}

좋은 웹페이지 즐겨찾기