Unity 3D Input System的使用

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

Input System是Unity新推出的输入系统,可以用作以前Input Manager的更具扩展性和可自定义性的替代方案。这里我将使用Unity 3D的Input System来实现一个FPS第一人称的游戏场景。

演示效果如下:

游戏场景设置

新建一个Unity 3D项目,在Asset Store里面下载StarterAssets - FirstPerson,然后在Package Manager里面导入这个Asset。选择这个Asset的Playground scene作为我们的实验场景。

新建一个Capsule的Game Object,命名为Player,其位置设置为x:0, y:1, z:0,为其创建并指定一个新的Layer,例如名为Character Layer

在Player下建一个空的Game object,命名为PlayerCameraRoot,Tag设置为CinemachineTarget,位置设置为x:0, y:0.6, z:0

在Window->Package Manage里面,选择Unity Registry,然后安装Cinemachine。安装之后在菜单栏里会出现Cinemachine选项,新建一个VirtualCamera,命名为PlayerFollowCamera。然后把我们刚才在Player下创建的PlayerCameraRoot拖动到Follow选项,在Body选线中设置为3rd Person Follow,Damping和Shoulder offset的xyz都设置为0。这样这个虚拟Camera就好像Player的眼睛了。

设置了VirtualCamera后,可以看到主场景的Main Camera自动启动了CinemachineBrain,可以自动追踪显示Virtual Camera的内容。

设置Input System

在Window->Package Manage里面,选择Unity Registry,然后安装Input System

在Assets目录下,新建一个Input的目录,然后在里面创建一个Input Actions,命名为PlayerInputAsset。

点击打开PlayerInputAsset,在左上角的Control Scheme里面新建一个,命名为KeyboardMouse,然后在下面的list里面添加keyboard和mouse。如果我们需要适配其他的输入设备,例如PS, XBOX,那么可以新建对应的Control Scheme。这里我只用到了键盘和鼠标作为控制设备。点击新建一个Action Map,命名为Player。然后在Actions里面添加一个Action,命名为Move,Action Type为Value,Control Type为Vector2。点击Move Action添加Binding,选择Add UP\DOWN\LEFT\RIGHT composite。然后分别为不同的方向映射对应的键盘WASD键。

新建一个Look的Action,Action Type为Value,Control Type为Vector2。点击Move Action添加Binding,Path选择Mouse Delta。在Processors里面添加Invert Vector 2,勾选Invert Y,因为鼠标控制上下旋转的默认方向和实际是颠倒的。另外再添加Scale Vector 2,X,Y都分别设置为0.05,这个可以对鼠标旋转的幅度进行缩放。

新建一个Jump Action,Action Type为Button。添加Binding,Path选择Space Keyboard

新建一个Sprint Action,Action Type为Pass through,Control Type为Any。添加Binding,Path选择Left Shift Keyboard。

如下图所示

Unity 3D Input System的使用,unity,3d,游戏引擎

回到之前创建的Player Game Object,添加Player Input component,在Player Input的Actions编辑框中,拖动刚才创建的PlayerInputAsset到里面。Behavior选择Send Message。查看Player Input Script,可以看到其对Input Acitons进行包装,但有对应的Action发生时就会发送相应的消息。例如当WASD键按下时,就会发送消息到Game Object的OnMove方法进行处理。

实现移动功能

在Player这个Object上,添加一个Character Controller component。在Assets下面创建一个Scripts目录,然后新建一个PlayerInputAsset的脚本,在里面定义方法来接收Ac文章来源地址https://www.toymoban.com/news/detail-829521.html

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

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

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

相关文章

  • Unity3D 网络游戏框架(二、同步Socket) 参考连接:Socket 类 (System.Net.Sockets) | Microsoft Learn

    1、Socket.Connect() 2、Socket.Send() 3、Socket.Receive() 在了解完Socket通讯流程图和相关API之后我们来开发客户端代码:  在Unity中添加 两个Button、一个InputField和有Text ,Connect 方法 绑定连接的按钮, Send 方法绑定发送按钮。 Connect :客户端点击连接后会和服务端进行连接,这里面127

    2024年02月16日
    浏览(35)
  • 【Unity3D赛车游戏优化篇】【十】汽车粒子特效和引擎咆哮打造极速漂移

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :Unity游戏demo – 😶‍🌫️版本: Unity2021 😶‍🌫️适合人群:Unity初学者进阶 😶‍🌫️学习目标:3D赛车游戏的基础制作 😶‍🌫️技能

    2024年02月09日
    浏览(45)
  • 【Unity3D】如何用使用Unity实现退出游戏的功能

    1、使用Unity编译器时: 2、打包后: 很多时候,我们都知道Application.Quit()代码,但是我们在Unity编译器调试的时候发现即使挂上了这个代码的组件或物体都无法退出编译,因为该代码只在打包后可以实现退出功能。 所以我们可以把两个实现代码同时写入脚本,这样既可以在编

    2024年02月11日
    浏览(48)
  • 使用Unity3D制作2D游戏的重点做法

    官网上有提供一个 2D游戏的教学范例 ,这个游戏只不过把镜头摆放在横向位置跟随角色移动,游戏内物件运动时固定一个轴不动,使他像横轴式的2D游戏来玩,本质上其实还是个3D游戏,所以如果没有3D建模的话不就没办法做2D游戏了?其实这些并没有定论,就看制作者如何运

    2024年02月11日
    浏览(38)
  • 使用Unity3D创建一个立方体(Cube)游戏对象并启动Unity

    Unity3D是一个强大的游戏开发引擎,可以用来创建各种类型的游戏和交互应用程序。在本文中,我们将探讨如何使用Unity3D创建一个立方体(Cube)游戏对象,并启动Unity编辑器。 首先,确保你已经安装了Unity3D并且已经在你的计算机上成功启动。然后,按照以下步骤进行操作:

    2024年02月05日
    浏览(71)
  • 【Unity3D】人机交互Input

    1 前言         Input 是 Unity3D 中用于人机交互的工具类,用户可以调用其 GetKey、GetMousePosition、GetMouseButton、GetAxis、GetButton 等方法获取键盘和鼠标的状态信息,再通过这些状态信息控制游戏对象,从而实现人机交互。          1)键盘输入         KeyCode 的取值有:  

    2023年04月11日
    浏览(24)
  • 【Unity】3D跑酷游戏

    finish_all 翻墙:https://www.youtube.com/watch?v=9ZEu_I-ido4list=PLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuLindex=3 最终成果 2.1 基本场景 1.创建Cube作为跑道 1)记得把位置Reset; 2)改名为ground; 3)改变其参数,x=15,y=1,z=100; 4)调整位置使其从相机同一位置开始。 选中单击f可聚焦。 2.创建Cube作为Pla

    2024年02月04日
    浏览(29)
  • Unity 3D射箭游戏

     地形:使用地形组件,上面有草、树;  天空盒:使用天空盒,天空可随时间变化  固定靶:有一个以上固定的靶标;  运动靶:有一个以上运动靶标,运动轨迹,速度使用动画控制;  射击位:地图上应标记若干射击位,仅在射击位附近可以拉弓射击;  驽弓动画:支持

    2024年02月05日
    浏览(31)
  • Unity游戏项目_3D迷宫(游戏源码免费)

    目录 一、效果图 二、讲解 三、资源分享 总结 游戏开始界面: 游戏画面: 游戏结束界面: 主要代码如下: 1.链接代码 2.小球移动代码 3、结束与打包代码   Unity游戏项目_3D迷宫(游戏源码免费)。包括游戏项目和打包后PC端游戏, 下载链接:https://download.csdn.net/download/weixin_

    2024年02月12日
    浏览(30)
  • Unity3D学习笔记——物理引擎

    1简介 刚体可以为游戏对象赋予物理特性,是游戏对象在物理系统的控制下接受推力和扭力,从而实现现实世界的物理学现象。 2属性 1简介 碰撞器是物理组件的一类,他与刚体一起促使碰撞发生 碰撞体是简单形状,如方块、球形或者胶囊形,在 Unity 3D 中每当一个 GameObjects

    2023年04月12日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包