unity实现简单fps游戏鼠标功能

1.unity实现瞄准镜功能

实现原理

  • 按下鼠标右键镜头拉近,再次按下镜头拉远(设置Camrea的FOV属性)
  • 逐渐拉近(例如:60->20逐渐拉近)
  • 设置缩放等级使每次点击的缩放效果不同
public class ScaleCamera : MonoBehaviour
{
    private bool isFar=true;
    private Camera cam;
    private int[] zoomLength = { 60,40,20 };//设置缩放等级
    private int length = 0;
    // Start is called before the first frame update
    void Start()
    {
        cam = GetComponent<Camera>();//获取Camera组件
    }

    // Update is called once per frame
    void Update()
    {
        ScaleCameraf();   
    }
    public void ScaleCameraf(){
    	//获取鼠标右键
        if (Input.GetMouseButtonDown(1))
        {
            length = (length + 1) % zoomLength.Length;//利用取余计算使缩放等级一直在zoomLength这个数组中循环
        }
        cam.fieldOfView = Mathf.Lerp(cam.fieldOfView, zoomLength[length], 0.1f);//缩放功能实现代码,利用Mathf.Lerp()函数实现平滑缩放效果
        if (Mathf.Abs(cam.fieldOfView - zoomLength[length]) < 0.1f)
        {
            cam.fieldOfView = zoomLength[length];//使cam.fieldOfView的数值为缩放等级中的精确数值
        }
    }
}

2.通过鼠标滚轮调节摄像机视野(FOV)

实现原理

通过获取虚拟轴"Mouse ScrollWheel"鼠标滑轮来调节FOV的数值,代码如下:

public class MouseScrollWheelDemo : MonoBehaviour
{
    private Camera m_Camera;
    public float speed = 5;
    void Start()
    {
        m_Camera = GetComponent<Camera>();
    }

    void Update()
    {
        MouseScrollWheelRun();
    }
    public void MouseScrollWheelRun()
    {
        m_Camera.fieldOfView -= Input.GetAxis("Mouse ScrollWheel")*speed;
    }
}

3.菜单确认后进行场景转换

  • 首先先利用UI系统绘制游戏开始菜单,给Button加上加载游戏事件,事件代码如下:
using UnityEngine;
using UnityEngine.SceneManagement;

public class LevelManager : MonoBehaviour
{
	public string sceneToLoad = "Game";


	public void LoadGame ()
	{
		SceneManager.LoadScene(sceneToLoad);//可以写Build-setting中的索引号,也可以写场景的名字
	}
}
  • 制作游戏界面Game(与Button加载事件的方法LoadScene()中的名字一样)
  • 在Build-setting中加入这两个场景,菜单栏因放在上层
    在这里插入图片描述
Logo

苏州本地的技术开发者社区,在这里可以交流本地的好吃好玩的,可以交流技术,可以交流招聘等等,没啥限制。

更多推荐