Unity基础篇-----Input输入

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

前言

此篇为个人对此部分所掌握知识的理解,如有错误的地方请谅解!,后续会对此部分知识进行进一步完善。

在程序中输入系统是必不可缺的,这部分知识也是我们必须需要掌握的,在Unity使用Input类来读取传统游戏中输入的轴,下面我们对Unity Input类中会常用到的函数及变量进行一个讲述。

一、读取键盘输入

方法所用参数:string类型(键盘按键对应的英文名称,26个英文字母可以用小写),或者使用KeyCode枚举,选择你需要判断的按键。

1、Input.GetKey()方法,返回类型为bool类型,当你一直按着某个按键时触发里面的内容

2、Input.GetKeyDown()方法,当你在按下某个按键的瞬间触发。

3、Input.GetKeyUp()方法,当你在按下某个键后松开的瞬间触发。

使用方法:

    void Update()
    {
        if (Input.GetKey("w"))
        {
            print("w键被一直按着");
        }
        if (Input.GetKey(KeyCode.W))
        {
            print("w键被一直按着");
        }
//------------------------------------
        if (Input.GetKeyDown("w"))
        {
            print("你按下了w键");
        }
        if (Input.GetKeyDown(KeyCode.W))
        {
            print("你按下了w键");
        }
 //------------------------------------
        if (Input.GetKeyUp("w"))
        {
            print("你松开了w键");
        }
        if (Input.GetKeyUp(KeyCode.W))
        {
            print("你松开了w键");
        }
     }

二、鼠标输入

方法所用参数:0(左键),1(右键),2(中键)

1、Input.GetMouseButton()方法,当你一直按着鼠标时触发。

2、Input.GetMouseButtonDown()方法,当你按下鼠标按键的一瞬间触发。

3、Input.GetMouseButtonUp()方法,当你按下鼠标后,松开的瞬间触发。

使用方法:

  void Update()
  {
      if (Input.GetMouseButton(0))
      {
          print("鼠标左键被你一直按下");
      }
      if (Input.GetMouseButtonDown(0))
      {
          print("你按下了鼠标左键");
      }
      if (Input.GetMouseButtonUp(0))
      {
          print("你松开了了鼠标左键");
      }
  }

三、虚拟按钮输入

方法所用参数:"虚拟按钮名称"

Input.GetButton()方法,当你一直按下虚拟按钮,比如手柄的扳机键(“Fire1”)

Input.GetButtonDown()方法,当你按下虚拟按钮的瞬间

Input.GetButonUp()方法,当你松开虚拟按钮的瞬间

    void Update()
    {
        if (Input.GetButton("Fire1"))
        {
            print("子弹在不断发射");
        }
        if (Input.GetButtonDown("Fire1"))
        {
            print("子弹发射");
        }
        if (Input.GetButtonUp("Fire1"))
        {
            print("停止发射");
        }
    }

四、常用到的一些方法

1、Input.GetAxis()方法,获取虚拟轴的值,返回值为float类型。值区间为[-1,1]

参数(“Horizontal”)表示左右的值,值为-1时,表示你在一直按下左方向对应的按键、设备类型为手柄时,表示你把推杆推到了最左边,为0时为默认位置,手柄中对应正中间,为1时与-1时对应的情况正好相反。

参数(“Vertical”)表示的是上下的值,与上述中左右情况类似。

通常这两个参数结合起来可用于实现,按下WASD/箭头按键/鼠标手柄,控制物体的前后左右移动等。

参数("Mouse X")返回鼠标左右移动的距离,值区间[-1,1]。

参数("Mouse Y")返回鼠标上下移动的距离,值区间[-1,1]。

实例:使用Input.GetAxis()方法实现,人物前后左右移动功能,移动鼠标控制镜头左右旋转。

public class Player : MonoBehaviour
{
    private CharacterController characterController;//角色控制器
    private float movespeed=5;//移动速度
    private float rotatespeed=2;//旋转速度
    private float rotatey = 0;//鼠标上下移动距离
    private float rotatex = 0;//鼠标左右移动距离
    private float maxangle = 45;//视角上下最大旋转角度
    private float minangle = -45; //视角上小最大旋转角度
    // Start is called before the first frame update
    void Start()
    {
        characterController = GetComponent<CharacterController>();
    }

    void Update()
    {
        float X = Input.GetAxis("Horizontal");//存储左右值
        float Y = Input.GetAxis("Vertical");//存储上下值
        Vector3 vector3 = new Vector3(X, 0, Y);//只修改x和z,y值为高度
        characterController.Move(characterController.transform.TransformDirection(vector3 * movespeed * Time.deltaTime));//调用角色控制器移动方法
        rotatex += Input.GetAxis("Mouse X") * rotatespeed;//获取鼠标左右移动距离
        rotatey -= Input.GetAxis("Mouse Y") * rotatespeed;//获取鼠标上下移动距离
        rotatey = Mathf.Clamp(rotatey, minangle,maxangle);//限制旋转角度值
        transform.localEulerAngles = new Vector3(0, rotatex, 0);//修改自身的左右旋转
        Camera.main.transform.localEulerAngles = new Vector3(rotatey,0, 0);//修改摄像机的上下旋转

    }
}

2、Input.GetTouch()方法,主要用于移动端开发使用,此方法主要获取触摸屏幕的操作数据,首先通过Input.touchCount这个方法获取到手指触摸屏幕的次数,通过GetTouch方法传输触摸次数,调用Touch结构判断手指的状态来是否为设定的状态,符合的话则执行相关内容。具体使用可参考链接:官网文章来源地址https://www.toymoban.com/news/detail-857544.html

到了这里,关于Unity基础篇-----Input输入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity 新版输入系统(Input System)

    官方教程 注意 新的输入法系统需要 Unity 2019.4+ 和 .NET 4 运行时。它不适用于 .NET 3.5 的项目。 教程版本:Unity 2021.3.26 导航栏 - Window - Package Manager 选择 Unity Registry 在列表中找到 Input System 点击 Install 安装 点击 Yes 启用新版 Input System 等待Unity重新启动 Unity 默认会同时启用旧版和

    2024年04月23日
    浏览(45)
  • Unity Input输入类-鼠标键盘检测

    当你开发Unity游戏时,与用户的输入交互是非常重要的。Unity提供了丰富的输入类来帮助你获取用户的输入,并做出相应的响应。在本文中,我将会向你介绍Unity中的输入类,包括Input、KeyCode、MouseButton和Touch等。 Input类 Input类是Unity中最基础的输入类,它可以获取各种类型的输

    2024年02月11日
    浏览(52)
  • 第五十章 Unity Input Manager 输入系统(上)

    Unity的输入系统支持多种输入设备,比如键盘和鼠标,游戏手柄,触摸屏,VR和AR控制器等等。Unity 通过两个独立的系统提供输入支持:第一,输入管理器 (Input Manager) 是 Unity 核心平台的一部分,默认情况下可用,属于旧的unity输入系统。第二,输入系统 (Input System) 是一个包,

    2024年02月10日
    浏览(38)
  • Unity根据目标点的位置计算Input输入

    当给一个目标点,如果目标直接去目标点我们可以直接让position指向目标点的position。 如果是转换输入呢? 举例:例如一个人物动画里有两个参数X和Y,X(- 1 ,1) 表示向左走和向右走,Y (-1 , 1) 向后和向前走。 如果我给一个目标点,如何计算应该给动画什么样的数值就可以呢

    2024年02月16日
    浏览(38)
  • 第五十一章 Unity Input Manager 输入系统(下)

    本章节我们就来使用水平轴和垂直轴来控制游戏物体的移动和旋转。我们之前大致讲过,游戏物体移动最重要的是方向,速度和时间三个要素,同样旋转也是。接下来,我们将之前创建的地形场景导入进来,如下所示 然后将之前的“MecanimDemo”工程里面的模型文件和动画文件

    2024年02月03日
    浏览(42)
  • 第五十二章 Unity Input System 新输入系统

    新输入系统InputSystem是2019年Unity新推出的插件。请注意,Unity默认使用旧的Input Manager,新的Input System处于未启用状态。当你安装Input System组件时,Unity会询问你是否启用新的输入系统。如果你选择Yes,Unity会启用新的并禁用旧的,之后编辑器将重新启动。具体的操作是,打开包

    2024年02月07日
    浏览(37)
  • 第四十一章 Unity 输入框 (Input Field) UI

    本章节我们学习输入框 (Input Field),它可以帮助我们获取用户的输入。我们点击菜单栏“GameObject”-“UI”-“Input Field”,我们调整一下它的位置,效果如下 我们在层次面板中发现,这个InputField UI元素包含两个子元素,一个是Placeholder,另一个是Text。如下所示 同样,我们查看

    2024年02月04日
    浏览(37)
  • Unity VR:XR Interaction Toolkit 输入系统(Input System):获取手柄的输入

    输入系统是 VR 应用中非常重要的一部分。我们通常需要获取 VR 手柄上某个按键的输入,然后将其作用到应用中,比如按下手柄的 Grip 键进行抓取。在我的其他 Unity XR Interaction Toolkit 的开发教程里,已经有介绍如何去获取手柄的输入。那么这篇教程我将做一个总结,将相关的

    2024年02月12日
    浏览(41)
  • Unity SteamVR 开发教程:SteamVR Input 输入系统(2.x 以上版本)

    输入系统是 VR 开发中非常重要的一部分。我们通常需要获取 VR 手柄上某个按键的输入,然后将其作用到应用中,比如按下手柄的 Grip 键进行抓取,就需要在检测到“按下手柄 Grip 键”的输入操作时,执行抓取的行为。 SteamVR 插件是 Valve 提供给 Unity 开发者的用于开发 PCVR (头

    2024年02月08日
    浏览(50)
  • 【Unity】Input——检测鼠标、键盘、手柄输入、鼠标在屏幕上的位置等等

    Unity提供的 更方便的 控制对象的 位移和旋转的解决方案 这个Axis是可以自定义的:

    2024年02月11日
    浏览(88)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包