简易相机控制器

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ThirdCamera : MonoBehaviour
{
    public Transform target;
    public float xSpeed=200f;
    public float ySpeed=200f;
    public float mSpeed=10f;
    public float yMinLimit=-50f;
    public float yMaxLimit=50f;
    public float distance=10f;
    public float minDistance=2f;
    public float maxDistance=30f;

    public bool needDamping=true;
    float damping=5f;
    public float x=0f;
    public float y=0f;
    // Start is called before the first frame update
    void Start()
    {
        Vector3 angles=transform.eulerAngles;
        x=angles.y;
        y=angles.x;
    }
    void LateUpdate()
    {
       if(target)
       {
           x+=Input.GetAxis("Mouse X")*xSpeed*0.02f;
           y-=Input.GetAxis("Mouse Y")*ySpeed*0.02f;
           y=ClampAngle(y,yMinLimit,yMaxLimit);
           distance-=Input.GetAxis("Mouse ScrollWheel")*mSpeed;
           distance=Mathf.Clamp(distance,minDistance,maxDistance);
           Quaternion rotation=Quaternion.Euler(y,x,0f);
           Vector3 disVector=new Vector3(0f,0f,-distance);
           Vector3 position=rotation*disVector+target.position;
           //adjust the camera
           if(needDamping)
           {
               transform.rotation=Quaternion.Lerp(transform.rotation,rotation,Time.deltaTime*damping);
               transform.position=Vector3.Lerp(transform.position,position,Time.deltaTime*damping);
           }
           else
           {
               transform.rotation=rotation;
               transform.position=position;
           }
       }
    }
    static float ClampAngle(float angle,float min,float max)
    {
        if(angle<-360)
            angle+=360;
        if(angle>360)
            angle-=360;
        return Mathf.Clamp(angle,min,max);
    }
}

全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务