欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

控制相机的旋转和移动

程序员文章站 2024-03-16 20:24:40
...

在玩游戏时会使用鼠标调节自己的视野 这时就用到相机的旋转和移动了
鼠标滑轮控制镜头的远近
Input.GetAxis(“Mouse ScrollWheel”)滑轮向上返回值为正 滑轮向下为负
镜头的远近 也就是相机在正前方离物体的远近用 transform.Translate(Vector3.forward * 1f);来改变相机的位置
先上代码

  public Transform CenObj;//围绕的物体
    private Vector3 Rotion_Transform;
    private new Camera camera;//相机 
    void Start()
    {
        camera = GetComponent<Camera>();
        Rotion_Transform = CenObj.position;
    }
    void Update()
    {
        Ctrl_Cam_Move();
        Cam_Ctrl_Rotation();
    }
    //镜头的远离和接近
    public void Ctrl_Cam_Move()
    {
        if (Input.GetAxis("Mouse ScrollWheel") > 0)
        {
            transform.Translate(Vector3.forward * 1f);//速度可调  自行调整
        }
        if (Input.GetAxis("Mouse ScrollWheel") < 0)
        {
            transform.Translate(Vector3.forward * -1f);//速度可调  自行调整
        }
    }
    bool isdown = false;
    //摄像机的旋转
    public void Cam_Ctrl_Rotation()
    {
        var mouse_x = Input.GetAxis("Mouse X");//获取鼠标X轴移动
        var mouse_y = -Input.GetAxis("Mouse Y");//获取鼠标Y轴移动
        //if (Input.GetKey(KeyCode.Mouse1))//鼠标右键
        //{
        //    transform.RotateAround(Rotion_Transform, Vector3.up, mouse_x * 5);
        //    transform.RotateAround(Rotion_Transform, transform.right, mouse_y * 5);
        //}
        if(Input.GetMouseButton(1))//鼠标右键
        {
            transform.RotateAround(Rotion_Transform, Vector3.up, mouse_x * 5);//上下旋转
            transform.RotateAround(Rotion_Transform, transform.right, mouse_y * 5);//左右旋转
        }
      

物体旋转:按下鼠标右键物体相机会随着鼠标滑动的方向旋转
transform.RotateAround(vector3: 围绕旋转的物体的位置,vector3: 旋转的方向,float:旋转的角度);
在实际游戏中会控制最大旋转角度用 Mathf.Clamp函数来限制
static function Clamp (value : float, min :float, max : float) : float

限制value的值在min和max之间, 如果value小于min,返回min。 如果value大于max,返回max,否则返回value

static function Clamp (value : int, min :int, max : int) : int

限制value的值在min和max之间,并返回value。