【Unity入门计划】基本概念(7)-Input Manager&Input类

这篇具有很好参考价值的文章主要介绍了【Unity入门计划】基本概念(7)-Input Manager&Input类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 Input Manager-Controls 控件

1.1 Key 键

1.2 Button 按钮

1.3 Virtual Axis 虚拟轴(复数:Axels)

Name 名称

Ngative Button, Positive Button 负/正值键(按钮)

2 C#中的Input类

2.1 键盘的输入(获取键盘事件)

Input.GetKey(string KeyName)

Input.GetKeyDown(string KeyName)

Input.GetKeyUp(string KeyName)

2.2 鼠标的输入(获取鼠标事件)

Input.GetMouseButton(int button)

Input.GetMouseButtonDown(int button)

Input.GetMouseButtonUp(int button)

2.3 访问虚拟轴 Input.GetAxis(string AxisName)

鼠标操作

键盘操作

Input.GetAxis()和Input.GetAxisRaw()区别


在Input Manager窗口中可以查看并定义项目输入轴及其他相关的操作,这里简单介绍一下它拥有的一些控件都是什么意思。

1 Input Manager-Controls 控件

官方文档:Input Manager - Unity 手册

Input Mnager主要使用以下三种控件

1.1 Key 键

指物理键盘上的任何键,比如↑、W、Space空格等。

1.2 Button 按钮

指一些物理控制器上的按钮,比如游戏手柄上的X按钮。

1.3 Virtual Axis 虚拟轴(复数:Axels)

映射到上面提到的按钮/键,用户激活控件后,虚拟轴会得到[-1,1]范围上的某个值。Unity中,创建的每个项目都包含了若干输入轴,在Input Manager窗口中可以查看输入轴具有的属性。

【Unity入门计划】基本概念(7)-Input Manager&Input类

Name 名称

轴的名称,可以在脚本中通过Name访问该轴。

Ngative Button, Positive Button 负/正值键(按钮)

用于分别沿着负向和正向推动的控件,可以是键盘上的键,也可以是控制器上的按钮。输入设置中,对于键盘按键:(默认分别为键盘上的“←”和“→”)

  • Negative Buttion——负值键,按下将轴设置成-1
  • Positive Button——正值键,按下将轴设置成1

对于游戏手柄

控制杆在左侧、中间、右侧分别将水平轴设置成-1、0和1。

其余的参数这里就不过多介绍了。

2 C#中的Input类

官方文档:UnityEngine.Input - Unity 脚本 API

如上,Unity中用Input类控制用户的输入,包括键盘、鼠标、重力感应等一些输入方式。以下介绍一些常用的InputAPI中的静态函数

2.1 键盘的输入(获取键盘事件)

Input.GetKey(string KeyName)

当键名为KeyName的键被持续按下(长按有效),返回true。可以被用在自动开火等情况。

if(Input.GetKey("up")){
    print("up arrow key is held down");
}

Input.GetKeyDown(string KeyName)

当某键被按下(按下有效)时,返回true.

Input.GetKeyUp(string KeyName)

当用户释放某键时,返回ture

if (Input.GetKeyUp("space"))
{
    print("Space key was released");
}

2.2 鼠标的输入(获取鼠标事件)

Input.GetMouseButton(int button)

返回是否按下了鼠标的button键,button值分别对应

  • 0——鼠标左键
  • 1——鼠标右键
  • 2——鼠标中键
        if (Input.GetMouseButton(0))
        {
            Debug.Log("Pressed left click.");
        }

        if (Input.GetMouseButton(1))
        {
            Debug.Log("Pressed right click.");
        }

        if (Input.GetMouseButton(2))
        {
            Debug.Log("Pressed middle click.");
        }

Input.GetMouseButtonDown(int button)

用户按下botton键的帧期间返回true

Input.GetMouseButtonUp(int button)

用户松开botton键的帧期间返回true

2.3 访问虚拟轴 Input.GetAxis(string AxisName)

public static float GetAxis (string axisName);

它返回的是一个值,这是值的含义取决于该轴映射的控制类型。并且需要通过1.3中介绍的属性Name轴名称访问虚拟轴。

例如想要查询当前水平轴的值并储存在变量中,就可以使用InputGetAxis(string AxisName)访问:

float horizontalInput = Input.GetAxis("Horizontal");

该轴映射一般分为触屏类(鼠标操作)、键盘操作类(键盘、控制杆)。

鼠标操作

当轴映射到鼠标,返回的float值不在[-1,1],此时的值为当前鼠标增量*轴的灵敏度。一般正值表示鼠标向右/向下移动,负值表示向左/向上移动。

键盘操作

对于游戏手柄的控制杆,-1表示向左推到底,1表示向右推到底,0表示在中间。

对于物理键盘操作,分为以下两种

  • Vertical:对应键盘的垂直,即上/下键,也可以自定义按键设置
  • Horizontal:对应键盘的水平,即左/右键,也可以自定义按键设置

Input.GetAxis()和Input.GetAxisRaw()区别

最后来简单说一下这两个都是访问虚拟轴的方法,它们区别在哪里。

直接用一个例子就能很好的证明:

先来看看项目中,控制玩家角色移动用的是Input.GetAxis():

        horizontal = Input.GetAxis("Horizontal");
        //获取垂直轴
        vertical = Input.GetAxis("Vertical");

用Input.GetAxisRaw():

        //获取水平轴并储存在新变量中
        horizontal = Input.GetAxisRaw("Horizontal");
        //获取垂直轴
        vertical = Input.GetAxisRaw("Vertical");

二者在场景中对玩家角色的控制效果分别为:(转向动画没加上去,看起来会有点怪)

 【Unity入门计划】基本概念(7)-Input Manager&Input类

【Unity入门计划】基本概念(7)-Input Manager&Input类

上为Input.GetAxis,下为Input.GetAxisRaw,可以很明显看出区别了!

Input.GetAxis()的看上去更顺滑,Input.GetAxisRaw()看上去就很干脆。

这是因为:

Input.GetAxis()返回值是范围[-1,1]上的,能够平滑过渡;

Input.GetAxisRaw()返回值是{-1, 0, 1}三者中的一个,比较绝对,就没有平滑过渡的效果。

因此,想实现不同效果的时候,可以根据需要选择其一。文章来源地址https://www.toymoban.com/news/detail-475747.html

到了这里,关于【Unity入门计划】基本概念(7)-Input Manager&Input类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity Shader】从入门到着魔(1)基本概念:什么是网格?材质?Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月09日
    浏览(41)
  • 【Unity Shader】从入门到领悟(1)基本概念:什么是网格?什么是材质和Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月06日
    浏览(44)
  • 【Unity Shader】从入门到感慨(1)基本概念:什么是网格?什么是材质和Shader?

    如上图,模型的三角形面就叫做网格(Mesh),网格的本质是一堆顶点数据的规则排序,在Unity和UE中由三角形表示,Maya等DCC软件(Digital Content Creation)中则通常由四边形表示(俩个三角形刚好组成一个四边形)。 在Unity中我们新建一个Cube,

    2024年02月11日
    浏览(34)
  • 【Unity入门】Input.GetAxis(““)控制物体移动、旋转

    Input.GetAxis(“”) 是 Unity 引擎中的一个方法,用于获取游戏玩家在 键盘 或 游戏手柄 上输入的某个轴(Axis)的值。这里的 “” 是一个字符串参数,表示要获取的轴的名称。 在 Unity 中,有多种轴类型,如 “Horizontal”(水平轴)、“Vertical”(垂直轴)、“Mouse X”(鼠标水平

    2024年01月17日
    浏览(38)
  • Unity 动画系统基本概念

    在古代,一幅字画叫一帧,而在计算机中,每次渲染完毕一幅画面并显示出来,这一幅画就是一帧。 连续切换的帧就形成了动态的画面。每秒刷新帧的次数称为频率,单位是FPS(Frames Per Second,帧/秒),也可以简称为\\\"帧\\\"。传统电影每秒显示24帧就可以保证良好的动态效果。

    2024年02月06日
    浏览(37)
  • Unity物理系统基本概念

    前言: 物理引擎仅仅是对现实物理的一种近似模拟。无论是从运算精度和时间连续性都不够准确。目的只是为了让游戏具备令人信服的物理表现,增强游戏的表现力和用户的沉浸感。 刚体是让物体产生物理行为的主要组件。一旦挂载了Rigidbody组件,它就纳入了物理引擎的控

    2024年02月05日
    浏览(40)
  • 【openGauss基本概念---快速入门】

    👈【上一篇】 💖The Begin💖 点点关注,收藏不迷路💖 【下一篇】👉 🔰 1.1 openGauss openGauss是一款 关系型数据库管理系统 —RDBMS。关系型数据库是指采用了关系模型来组织数据的数据库, 以行和列的形式存储数据 。 openGauss的数据库节点负责存储数据,其 存储介质是磁盘

    2024年02月09日
    浏览(36)
  • RocketMQ基本概念与入门

    message: 消息数据对象 product: 程序代码,生成消息,发送消息到队列 consumer: 程序代码,监听(绑定)队列,获取消息,执行消费代码 queue: Rocketmq rabbitmq kafka这些消息队列中间件软件. product Consumer 1.nameserver NameServer是一个简单的 Topic 路由注册中心,支持 Topic、Broker 的动态注册与发现。

    2024年02月15日
    浏览(41)
  • Kafka入门基本概念(详细)

    Kafka是一种高吞吐量的分布式发布订阅消息系统(消息引擎系统),它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合

    2024年01月16日
    浏览(41)
  • nodejs 入门基本概念

      Node.js 是2009的时候由大神 Ryan Dahl 开发的。Ryan 的本职工作是用 C++ 写服务器,后来他总结出一个经验, 一个高性能服务器应该是满足“事件驱动,非阻塞 I/O”模型的 。C++ 开发起来比较麻烦,于是 Ryan 就想找一种更高级的语言,以便快速开发。    Ryan 发现 JS 语言本身

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包