【Unity】Input——检测鼠标、键盘、手柄输入、鼠标在屏幕上的位置等等

这篇博客详细介绍了Unity引擎中如何检测和处理各种用户输入,包括鼠标位置、鼠标点击与滚动、键盘按键、游戏轴输入以及手柄和移动设备的输入。通过示例代码展示了Input类的各种方法,如GetMouseButtonDown、GetAxis等,用于实现游戏交互和控制。
摘要由CSDN通过智能技术生成

1.鼠标在屏幕上的位置

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.检测鼠标输入

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.检测键盘输入

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.检测默认轴输入

Unity提供的 更方便的 控制对象的 位移和旋转的解决方案

这个Axis是可以自定义的:
在这里插入图片描述
在这里插入图片描述

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.其它的补充

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.手柄输入相关

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.移动设备相关

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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值