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。
如下图所示
回到之前创建的Player Game Object,添加Player Input component,在Player Input的Actions编辑框中,拖动刚才创建的PlayerInputAsset到里面。Behavior选择Send Message。查看Player Input Script,可以看到其对Input Acitons进行包装,但有对应的Action发生时就会发送相应的消息。例如当WASD键按下时,就会发送消息到Game Object的OnMove方法进行处理。文章来源:https://www.toymoban.com/news/detail-829521.html
实现移动功能
在Player这个Object上,添加一个Character Controller component。在Assets下面创建一个Scripts目录,然后新建一个PlayerInputAsset的脚本,在里面定义方法来接收Ac文章来源地址https://www.toymoban.com/news/detail-829521.html
到了这里,关于Unity 3D Input System的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!