Unity的Input输入

简介: Unity中的输入管理器由Input类进行操控。官方文档地址:https://docs.unity3d.com/ScriptReference/Input.html 中文翻译的话可以在这里:http://www.ceeger.com/Script/Input/Input.html   这里只说几个易混淆的点。

Unity中的输入管理器由Input类进行操控。官方文档地址:https://docs.unity3d.com/ScriptReference/Input.html

中文翻译的话可以在这里:http://www.ceeger.com/Script/Input/Input.html

 

这里只说几个易混淆的点。

既然已经有GetKey、GetKeyDown、GetKeyUp 以及 GetMouseButton、GetMouseButtonDown、GetMouseButtonUp,为什么还要有GetButton、GetButtonDown、GetButtonUp呢?

Down、Up分别表示按下、松开,Key、Mouse很容易理解:分别表示键盘、鼠标,GetKey、GetMouse表示按下后没有释放这个动作,类似 Press。

我们知道键盘的按键位置是固定的,鼠标左、右、中键也是固定的,也就是映射关系是固定的。而Button是输入管理器 InputManager所定义的虚拟器,它通过名称来访问。怎么理解,先看下图。

Input 的设置可以通过 Edit –> Project Settings –> Input打开面板

image

如果我需要判断是否进行了跳跃(Jump),可以在代码中这样写。

if (Input.GetButtonDown("Jump"))
{
    Debug.Log("Input Button Down Jump.");
}

 

运行,当按下空格键,控制台就会输出“Input Button Down Jump.”。而如果把Positive Button 修改一下,不是 space 也是 k,此时当你按下键盘上的 k 时,控制台才会有输出,而按空格键则是没有反应的。它通过名称来进行映射,相较前面 的key、mouse会灵活一些。

 

鼠标事件的左、中、右键,分别对应的值是0、2、1。

if(Input.GetMouseButton(0)) {
    //左键被按下, 放在 Update 方法中会被不断触发

}

if(Input.GetMouseButtonDown(1)) {
    //右键按下

}

if(Input.GetMouseButtonUp(2)) {
    //中键抬起
    
}

键盘对应的字符通过KeyCode可以直接获得,下面的代码当按下键盘A键时在当前节点下添加一个“Button”对应,当按下 D 键时删除一个节点。

if (Input.GetKeyDown(KeyCode.A))
{
    Button newButton = Instantiate(button);
    newButton.transform.SetParent(this.gameObject.transform, false);
}
else if (Input.GetKeyDown(KeyCode.D))
{
    Button[] buttonChilds = gameObject.GetComponentsInChildren<Button>();
    List<Button> buttonList = new List<Button>(buttonChilds);

    int nCount = buttonList.Count;
    if (nCount > 1)
    {
        Button tmpButton = buttonList[nCount - 1];                                
        Destroy(tmpButton.gameObject);
    }
}

 

利用 GetAxis 可以制作摇杆(键盘的 上、下、左、右,以及 A、W、S、D),来对游戏对象进行移动(Translate)、旋转(Rotate)。返回值的范围是[-1, 1],可以自行设定间隔大小,比如每次只增、减0.01,详情可查看官网的视频:https://unity3d.com/cn/learn/tutorials/topics/scripting/getaxis

目录
相关文章
|
2月前
|
数据可视化 C# 图形学
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
【推荐100个unity插件之18】Unity 新版输入系统Input System的基础使用
46 0
|
图形学
Unity3D Input按键系统
默认输入轴:   Horizontal 和 Vertical被映射到w, a, s, d键和方向键   Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Command键   Mouse X 和 Mouse Y被映射到鼠标移动增量   Window Shake X...
1582 0
|
定位技术 图形学
|
2月前
|
图形学
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
【制作100个unity游戏之28】花半天时间用unity复刻童年4399经典小游戏《黄金矿工》(附带项目源码)
73 0
|
6天前
|
图形学
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
小功能⭐️获取Unity游戏物体上,所挂载组件的名称
|
2月前
|
存储 JSON 关系型数据库
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——大型游戏存储的最优解
64 2
|
2月前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(上)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)
105 2
|
2月前
|
存储 JSON 图形学
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
【unity实战】制作unity数据保存和加载系统——小型游戏存储的最优解
50 0
|
2月前
|
图形学
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
【制作100个unity游戏之29】使用unity复刻经典游戏《愤怒的小鸟》(完结,附带项目源码)(下)
41 0