当前位置: 首页 > ops >正文

【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行人物移动(包括配置、代码详细实现过程)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、InputSystem配置
  • 二、GameInput 游戏输入脚本
    • 1.实现思路
    • 2.完整代码
  • 三、Player 游戏人物移动脚本
    • 1.实现思路
    • 2.完整代码
  • 四、场景脚本设置
    • 1.组件设置
  • 五、问题解决
    • 1.人物一直下落
    • 2.人物跳跃时,地面检测不到离开地面
  • 总结


前言

上一篇我们一起学习并安装了新版InputSystem系统,接下来我们学习如何使用他们完成一些基础的功能开发。

该文章解决的问题:

  1. 如何使用Unity新版InputSystem系统实现人物按键WASD移动
  2. Input system 怎么调用监听和预留监听接口
  3. 过程中遇到的问题以及解决方案

安装原帖请参考:
【Unity 2023 新版InputSystem系统】新版InputSystem 如何进行项目配置并安装

一、InputSystem配置

接下来,我们先对Input System 进行配置

  1. 创建Move事件
    我们在新建的Input Action 视图中,创建一个类型为Value,返回值为Vector2的参数,用来获取我们得到的移动方向。
    在这里插入图片描述
  2. 创建WASD控制事件
    点击Move末端的“+”,我们可以看到有以下四个选项,这里我们选择第二个,Up\Down\Left\Right。

在这里插入图片描述

完成创建后我们可以看到此时已经创建出4个绑定的事件,下面我们需要对这4个事件分别进行设置。
移动系统配置

  1. 识别按键
    点击Up,选择“Path”,这里我们可以看到图片中标红的位置,点击"Listen",获取键盘监听,这时,我们敲击键盘“W”按键,系统即可识别此按键。
    在这里插入图片描述
  2. 其他按键
    其他按键,以此按照步骤3进行配置,完成配置后,点击"Save Asset" 按钮,至此,完成移动的按键配置。

二、GameInput 游戏输入脚本

1.实现思路

  1. 获取我们创建的Action生成的脚本
gameControl = new GameControl();
  1. 激活设置人物移动键位输入状态
    我们创建了一个方法,SetPlayerInputState,可以传入我们的激活状态,当需要使用到Player这个事件集合时,我们需要先对该控制集合进行激活,并为他添加我们所需要的监听事件,以便后续使用。
private void SetPlayerInputState(bool isEnable){if (isEnable){gameControl.Player.Enable();gameControl.Player.Move.performed += MovePerformed;}else{gameControl.Player.Disable();gameControl.Player.Move.performed -= MovePerformed;}}
  1. 读取input system所获得的移动向量
    我们要获取的是Player事件集合下面的Move事件所返回的值,因此我们使用**gameControl.Player.Move.ReadValue()**方式读取到我们所需要的Vector2向量,并且返回一个我们所需要的向量值。后续我们需要用这个向量值,对人物的移动操作进行配置。
    在这里插入图片描述
    代码实现:
public Vector3 GetPlayerMoveNormalized()
{Vector2 moveInput = gameControl.Player.Move.ReadValue<Vector2>();Vector3 direction = new Vector3(moveInput.x, 0, moveInput.y);return direction.normalized;
}
  1. 监听移动事件
    此处预留了一个移动事件的监听,如果在人物移动的过程中,需要对其行为进行监听,后续可以为其进行事件的添加调用。
private void MovePerformed(UnityEngine.InputSystem
http://www.xdnf.cn/news/7215.html

相关文章:

  • 【软考-架构】15、软件架构的演化和维护
  • 第2篇 水滴穿透:IGBT模块的绝对防御体系
  • NIFI 2.40简介及部署
  • python实现pdf转图片(针对每一页)
  • 手机内存不够,哪些文件可以删?
  • 电气材料的分类及应用
  • MySQL 8.0 OCP 英文题库解析(五)
  • python文件部署docker,容器路径与系统路径映射
  • ionic 列表操作详解
  • 基于vue框架的东莞市二手相机交易管理系统5yz0u(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 解决Windows磁盘管理中因夹卷导致的无法分区问题
  • 146. LRU 缓存
  • 自己拥有一台服务器可以做哪些事情
  • 科技行业智能化升级经典案例—某芯片公司
  • Perl测试管理:从混乱到高效的系统化实践
  • 《DiffPoint训练过程详解:从图像到点云的逐步优化》
  • B树与B+树全面解析
  • Vue3.5 企业级管理系统实战(十九):菜单管理
  • 开发 前端搭建npm v11.4.0 is known not to run on Node.js v14.18.1.
  • Ansible模块——主机名设置和用户/用户组管理
  • 02-前端Web开发(JS+Vue+Ajax)
  • 用Python实现数据库数据自动化导出PDF报告:从MySQL到个性化文档的全流程实践
  • 【工具使用】STM32CubeMX-片内Flash读写操作
  • DTAS 3D多约束装配助力悬架公差分析尺寸链计算:麦弗逊/双叉臂/多连杆/H臂一网打尽
  • 软件设计师“开发过程模型:瀑布、增量、原型、螺旋、喷泉、基于构件的开发模型、形式化方法模型、统一过程RUP、敏捷、极限”真题考点分析——求三连
  • 从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案
  • 纯前端实现图文识别 OCR
  • paddle ocr本地化部署进行文字识别
  • 从编程助手到AI工程师:Trae插件Builder模式实战Excel合并工具开发
  • 解决 MySQL 错误 1356 (HY000)