Unity中的Input(笔记)

目录

前言

鼠标在屏幕位置

检测鼠标输入

鼠标按下瞬间触发

鼠标抬起瞬间触发

鼠标长按按下抬起都会触发

滑轮滚动

检测键盘输入

键盘按下抬起长按触发

字符串重载

检测默认轴输入

其他

任意键按下

手柄输入

得到链接手柄的所有按键名字

手柄按键按下抬起长按

移动设备输入

是否启用多点触控

陀螺仪

重力加速度向量

旋转速度

陀螺仪 当前的旋转四元数

总结


前言

        本篇笔记用于记录唐老狮视频课程的学习心得

        输入对于一个应用来说至关重要!一般输入都是写在Update里面的。Unity里面和输入的内容都是在Input这个静态类里面的。

鼠标在屏幕位置

        我们的鼠标位置都是存储在Input.mousePosition里面的。

        不过要特别注意的虽然他是一个Vector3类型的值,但是只有xy有数值,z一直是0,还有屏幕的原点是在左下角。

        我们可以通过如下代码获取鼠标的位置。

print(Input.mousePosition);

检测鼠标输入

鼠标按下瞬间触发

        我们用Input.GetMouseButtonDown来接受输入,他是一个bool类型的返回值,如果按下了就会返回true。

        if(Input.GetMouseButtonDown(0))
        {
            //按下鼠标左键后执行逻辑
        }
鼠标输入参数表
参数按键
0左键
1右键
2滚轮
3侧键1
4侧键2

鼠标抬起瞬间触发

        抬起和按下同理,是Input.GetMouseButtonUp

        if(Input.GetMouseButtonUp(0))
        {
            //按下鼠标左键后执行逻辑
        }

鼠标长按按下抬起都会触发

        这个是只要按下就会触发,一直按住一直触发,详情参考长按开镜瞄准。

        我们用的是Input.GetMouseButton

        if(Input.GetMouseButton(0))
        {
            //按下鼠标左键后执行逻辑
        }

滑轮滚动

        我们可以通过Input.mouseScrollDelta来获取滑轮滚动状态,他是一个Vector3类型的值,当滚动时,其中y值会发生变化。

print(Input.mouseScrollDelta);
滚轮状态
y值状态
-1向下滚
0不动
1向上滚

        如果你有横着滚得滑轮的话,那改变的可能是x值。

检测键盘输入

键盘按下抬起长按触发

        键盘按下其实完全和鼠标是一模一样的,就是Down、Up还有去掉他们,这三个,完全一样,就是多了一个枚举就是KeyCode,不过也很简单,一看就明白了,比如下面的代码就是A键按下瞬间执行代码。

if(Input.GetKeyDown(KeyCode.A)){
            //执行逻辑
        }

字符串重载

        我们当然也可以直接输入字符串来当做参数,不过要注意的是必须输入小写,大写是不可以的。

if(Input.GetKeyDown("a")){
            //执行逻辑
        }

检测默认轴输入

        我们学习鼠标键盘输入主要是为了控制玩家,所以Unity给我们更方便的方法。

输入输出
名称操作返回值

Input.GetAxis("Horizontal");

键盘AD按下时-1~1

Input.GetAxis("Vertical");

键盘SW按下时-1~1

Input.GetAxis("Mouse X");

鼠标横向移动时-1~1

Input.GetAxis("Mouse Y");

鼠标竖向移动时-1~1

        注意,这里面字符串的值并不是固定的,而是可以去设置的。可以去Edit->Project Settings ->Input Manager里面自己设置。

        不过我们还可以用Input.GetAxisRaw,他和上面那个是一样的,唯一区别是,这个没有中间值,只有-1、0和1。

其他

任意键按下

        这个用Input.anyKey来表示,和上面说过的方法是一样的,不过他没有Up类型的。

if(Input.anyKey){
            //执行逻辑
        }

        并且我们可以和Input.inputString来获取我们当前按下的究竟是什么按键,可以完成改建的功能。

if(Input.anyKey){
            print(Input.inputString);
        }

手柄输入

得到链接手柄的所有按键名字

string[] strs = Input.GetJoystickNames();

手柄按键按下抬起长按

        我们用Input.GetButton方法来表示手柄按键的按下抬起长按,具体三个也是和之前键盘鼠标的方法命名模式是一样的,我们可以用这个和上面获取按键名字配合起来。

if(Input.GetButton("x"))
{
    //执行逻辑
}

移动设备输入

        我们一般用Input.touchCount来判断当前屏幕上有没有被触摸,如果这个数值大于0,就说明又被触摸的点,然后再去执行接下来的逻辑。

if(Input.touchCount > 0)
{
    Touch t1 = Input.touches[0];

    //位置
    print(t1.position);
    //相对于上次位置的变化
    print(t1.deltaPosition);
}

是否启用多点触控

        如果要启用多点触控那么我们首先要Input.multiTouchEnabled设置为true

Input.multiTouchEnabled = true;

陀螺仪

        在使用前,我们同理,也是要将其

Input.gyro.enabled = true;
重力加速度向量
print(Input.gyro.gravity);
旋转速度
print(Input.gyro.rotationRate);
陀螺仪 当前的旋转四元数

print(Input.gyro.attitude);

总结

        Input类提供了大部分和输入有关的内容,鼠标、键盘、触屏、手柄和重力感应。

        文章仅用于学习使用,如果有错误请指出,一起进步,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值