摄像机的跟随与操作

摄像机就是我们在游戏中的眼睛,设游戏开开发必不可少的物体,今天主要讲摄像机的跟随和鼠标控制谁相机的视角移动。

摄像机的跟随

public class FllowPlayer : MonoBehaviour {
    private Transform player;
	private Vector3 pos;//摄像机准备照射的位置
	private float speed=3f;
void Start () {
		player = GameObject.FindWithTag("Player").transform;//获取玩家位置
	}
	
	// Update is called once per frame
	void Update () {
		pos=player.position+Vector3.up*up-player.forward*away;//摄像机跟随玩家
		transform.position=Vector3.Lerp(transform.position,pos,speed*Time.deltaTime);//用差值让摄像机移动更加平滑
		transform.LookAt(player.position);//摄像机始终看向玩家的位置		

    }
}

摄像机的操作

通过鼠标的左右移动实现镜头的左右移动

通过鼠标的上下移动控制人物的抬头和低头

通过鼠标的滚轮控制镜头的放大和缩小 

public class FllowPlayer : MonoBehaviour {
    private Vector3 cameratRotation;
	private float cspeed = 2f;
	public float up = 3f,away=4f;
	
	void Start () {	
	}
	
	void Update () 
    {
	CameraChange();

    }

void CameraChange()
	{
        //滚轮实现镜头放大缩小   获取鼠标水平、垂直轴和滚轮
        float x = Input.GetAxis("Mouse X");
        float y = Input.GetAxis("Mouse Y");
		float z = Input.GetAxis("Mouse ScrollWheel");
		if(z<0)
		{
			if(Camera.main.fieldOfView<90)//fieldOfView摄像机的放大缩小组件的属性
			{
				Camera.main.fieldOfView += 2;
            }
		}
        if (z > 0)
        {
            if (Camera.main.fieldOfView > 30)
            {
                Camera.main.fieldOfView -= 2;
            }
        }
		//根据鼠标已从镜头旋转
		cameratRotation.x-=y*cspeed;
		cameratRotation.y+=x*cspeed;

		cameratRotation.x = Mathf.Clamp(cameratRotation.x, -30, 30);//限制抬头和低头的范围
		transform.rotation = Quaternion.Euler(cameratRotation.x, cameratRotation.y, 0);//相机旋转
		player.rotation = Quaternion.Euler(0, cameratRotation.y, 0);//玩家沿着y轴一起旋转

    }
}

猜你喜欢

转载自blog.csdn.net/Optimistic_lx/article/details/129368488