微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity(4)-Input

B站Unity学习笔记
链接:https://www.bilibili.com/video/BV12s411g7gU
Input
-包装了输入功能的类,可以读取输入管理器中设置的按键,以及访问移动设备的多点触控或加速感应数据。
-建议在Update中监测用户输入。

获取鼠标输入
  • 当指定的鼠标按钮被按下时返回true, bool result = Input.GetMouseButton(0);
  • 用户按下指定鼠标按键的第一帧返回true, bool result = Input.GetMouseButtonDown(0);
  • 用户释放指定鼠标按键的第一帧返回true, bool result = Input.GetMouseButtonUp(0);
  • 按钮值设定:0对应左键,1对应右键,2对应中键
获取键盘输入
  • 当通过名称指定的按键被用户按住时返回true, bool result = Input.GetKey(KeyCode.A);
  • 用户按下指定名称按键的那一帧返回true, bool result = Input.GetKeyDown(KeyCode.A);
  • 用户释放指定名称按键的那一帧返回true, bool result = Input.GetKeyUp(KeyCode.A);
练习

瞄准镜。通过鼠标右键,实现摄像机镜头缩放。

public class CareamZoom : MonoBehavIoUr
{
    public bool isDown;
    public bool isKey;

    void Update1()
    {
        isDown = Input.GetMouseButton(0);
        isKey = Input.GetKey(KeyCode.LeftAlt);
        //检测按下C键同时按下D键
        if (Input.GetKey(KeyCode.C) && Input.GetKeyDown(KeyCode.D))
        {
            print("CD");
        }
    }

    private Camera camera;

    private void Start()
    {
        camera = GetComponent<Camera>();
    }

    private bool isFar = true;
    private void Update2()
    {
        if (Input.GetMouseButtonDown(1))
        {
            isFar = !isFar;
            if (isFar)
            {
                camera.fieldOfView = 60;
            }
            else
            {
                camera.fieldOfView = 20;
            }
        }
    }

    private void Update3()
    {
        if (Input.GetMouseButtonDown(1))
        {
            isFar = !isFar;
        }
        if (isFar)
        {
            if (camera.fieldOfView < 60)
                camera.fieldOfView += 2;
        }
        else
        {
            if (camera.fieldOfView > 20)
                camera.fieldOfView -= 2;
        }
    }

    private void Update4()
    {
        if (Input.GetMouseButtonDown(1))
        {
            isFar = !isFar;
        }
        if (isFar)
        {   //无限接近,但不等于终点
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
            if (Mathf.Abs(camera.fieldOfView - 60) < 0.1f)
            {
                camera.fieldOfView = 60;
            }
        }
        else
        {
            camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
            if (Mathf.Abs(camera.fieldOfView - 20) < 0.1f)
            {
                camera.fieldOfView = 20;
            }
        }
    }

    public float[] zoomLevels;
    private int currentLevel;
    //private void Update()
    //{
    //    if (Input.GetMouseButtonDown(1))
    //    {
    //        //修改缩放等级
    //        //currentLeveL++;
    //        // currentLevel = currentLevel < zoomLevels.Length - 1 ? currentLevel + 1 : 0;
    //        currentLevel = (currentLevel + 1) % zoomLevels.Length;
    //    }
    //    camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevels[currentLevel], 0.1f);
    //    if (Mathf.Abs(camera.fieldOfView - zoomLevels[currentLevel]) < 0.1f)
    //        camera.fieldOfView = zoomLevels[currentLevel];
    //}
}


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐