Unity3D——学习分享(十三)鼠标滚轮控制视野拉近拉远效果

通过鼠标的滚轮控制摄像机视野的拉近拉远效果

游戏中常常见到视野的拉近拉远效果,比如英雄联盟中就可以通过鼠标滚轮进行视野的拉近与拉远,同时你也会发现在视野进行拉近拉远到一定程度时,在进行操作就不起作用了,因为视野的拉近拉远有一定的限制范围。所以今天分享一个摄像机视野拉近拉远的代码。

代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FllowPlayer : MonoBehaviour {

    public float scrollSpeed = 10;//滑轮滚动速度
    private Transform player;//主角的位置变量
    private Vector3 offsetPosition; //位置偏移
    public float distance = 0;//位置偏移的向量长度
    
void Start () {
        player = GameObject.FindGameObjectWithTag(Tags.player).transform;//找到主角的位置
        offsetPosition = transform.position - player.position;
        //主角与摄像机之间的偏移
 }

   void Update () {
   //调用处理视野的拉近和拉远方法
        ScrollView();
}

private  void ScrollView()
    {
     
        //向后滑动返回负值  向前滑动返回正值
        distance = offsetPosition.magnitude;//位置偏移的向量长度
        distance -= Input.GetAxis("Mouse ScrollWheel") *scrollSpeed;//获取滚轮值的改变
        distance = Mathf.Clamp(distance, 2, 15);//限制滚轮距离的范围,此数值可根不同需求设置相应的值
        offsetPosition = offsetPosition.normalized * distance;  //单位向量  方向不变 距离改变

    }

}

=

注意:代码中定义了一个ScrollView()方法目的是使代码更加清晰整洁,在相对较大的项目中,代码都成百上千行,如果全部写在Update函数中,极不容易进行修改和操作,也不方便团队成员的阅读和查阅。所以一般在Update中每定义使用一种类型的功能时,可以 为这类功能定义一个方法,通过在Update对方法的调用来实现功能。

猜你喜欢

转载自blog.csdn.net/weixin_43159569/article/details/84872333