[Unity] Input - detect mouse, keyboard, handle input, mouse position on the screen, etc.

1. The position of the mouse on the screen

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //屏幕的左下角是(0,0)点(往右是x轴正方向,往上是y轴正方向)
        //返回值是Vector3,只有x和y有值,z始终为0
        print(Input.mousePosition);
    }
}

2. Detect mouse input

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.鼠标按下的一瞬间 进入
        //  只有按下的一瞬间 进入一次
        //  参数:0-左键,1-右键,2-中键
        if (Input.GetMouseButtonDown(1))
        {
    
    
            print("按下了鼠标右键");
        }

        //2.鼠标抬起的一瞬间 进入
        //  只有抬起的一瞬间 进入一次
        //  参数:0-左键,1-右键,2-中键
        if (Input.GetMouseButtonUp(0))
        {
    
    
            print("抬起了鼠标左键");
        }

        //3.鼠标长按 进入
        //  当按住按键不放时,会一直进入
        //  参数:0-左键,1-右键,2-中键
        if (Input.GetMouseButton(0))
        {
    
    
            print("长按");
        }

        //4.鼠标滚轮滚动
        //  此API可以得到当前鼠标滚轮的状态
        //  返回值是Vector2,滚轮滚动时 会改变Vector2的y的值
        //  y:-1是往上滚、0是不滚、1是往下滚
        print(Input.mouseScrollDelta);
    }
}

3. Detect keyboard input

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.键盘按下
        if (Input.GetKeyDown(KeyCode.W))
        {
    
    
            print("按下了W");
        }
        //  传入字符串的重载 (用的少)
        //  注意 必须传入小写字母,大写会报错
        if (Input.GetKeyDown("a"))
        {
    
    
            print("按下了A");
        }

        //2.键盘抬起
        if (Input.GetKeyUp(KeyCode.W))
        {
    
    
            print("抬起了W");
        }

        //3.键盘长按
        if (Input.GetKey(KeyCode.W))
        {
    
    
            print("长按W,玩家往前走");
        }
    }
}

4. Detect default axis input

A more convenient solution for controlling the displacement and rotation of objects provided by Unity

This Axis can be customized:
insert image description here
insert image description here

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.键盘AD按下时,返回 -1 ~ 1之间的值
        //得到的这个值 就是左右方向,可以通过它来控制对象左右移动 或 左右旋转
        print(Input.GetAxis("Horizontal"));

        //2.键盘SW按下时,返回 -1 ~ 1之间的值
        //得到的这个值 就是上下方向,可以通过它来控制对象上下移动 或 左右旋转
        print(Input.GetAxis("Vertical"));

        //3.鼠标水平移动时,返回 -1 ~ 1之间的值
        print(Input.GetAxis("Mouse X"));

        //4.鼠标垂直移动时,返回 -1 ~ 1之间的值
        print(Input.GetAxis("Mouse Y"));

        //补充:Input.GetAxisRaw方法
        //  它和GetAxis使用方法相同
        //  只不过 他的返回值只会有-1 0 1这三个数,没有中间的过度值
    }
}

5. Other supplements

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.是否有任意键或鼠标长按
        if (Input.anyKey)
        {
    
    
            print("有任意键正在长按");
        }

        //2.是否有任意键或鼠标被按下
        if (Input.anyKeyDown)
        {
    
    
            print("有任意一个键被按下了");
        }

        //3.得到这一帧的键盘输入
        print(Input.inputString);
    }
}

6. Handle input related

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.得到连接的手柄的所有按钮名字
        //  返回一个string数组
        string[] strs = Input.GetJoystickNames();

        //2.手柄某一个按键被按下
        if (Input.GetButtonDown("Jump"))
        {
    
    
            
        }

        //3.手柄某一个按键抬起
        if (Input.GetButtonUp("Jump"))
        {
    
    

        }

        //4.手柄某一个按键长按
        if (Input.GetButton("Jump"))
        {
    
    
        }
    }
}

7. Mobile device related

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

public class Lesson11 : MonoBehaviour
{
    
    
    void Update()
    {
    
    
        //1.移动设备触摸
        if (Input.touchCount > 0)
        {
    
    
            //得到第一根手指的触摸
            Touch t1 = Input.touches[0];
            //得到触摸的位置
            print(t1.position);
            //得到相对上次位置的变化
            print(t1.deltaPosition);
        }

        //2.是否启用多点触控
        //  true开启、false关闭
        Input.multiTouchEnabled = true;

        //3.陀螺仪(重力感应)
        //  是否开启陀螺仪(必须开启,才能正常使用)
        Input.gyro.enabled = true;
        //  得到重力加速度向量
        print(Input.gyro.gravity);
        //  得到旋转速度
        print(Input.gyro.rotationRate);
        //  得到陀螺仪当前旋转的四元数
        //  比如 用这个角度信息来控制场景上的一个3D物体受重力影响
        //  手机怎么动 它就怎么动
        print(Input.gyro.attitude);
    }
}

Guess you like

Origin blog.csdn.net/SEA_0825/article/details/126838367