使用手柄控制Unity及效果展示(1)

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

Unity支持手柄的控制,效果图如下所示:

使用手柄控制Unity及效果展示(1)
使用手柄控制Unity及效果展示(1)

这是一篇针对手柄控制U3D入门的过程记载,主要以实现功能为目的,分四个部分进行过程展示:

  1. Input System包的下载

  1. 设备的查找

  1. Input Actions控件的使用

  1. 主要代码的解释及编写

这里也将我使用过程中遇到的问题和解决方法也用红字进行标注,希望能帮到遇到类似问题的朋友。

一 Input System的下载

这里,我用的Unity是2020.3.29版本的。进入Unity自创一个项目后,单击菜单栏Window-Package Manager,如下图1所示,在左上角“Packages”中单击”Unity Registry“选项,在搜索栏中输入”Input System“包进行下载,如图2所示。该包下载完毕后,会有弹窗出来选择”Yes“重启Unity,重启后包就已安装到此项目中。

使用手柄控制Unity及效果展示(1)

图1

使用手柄控制Unity及效果展示(1)

图2

二 设备的查找

将手柄连接到电脑上,我们可以通过"Win-设置-设备-蓝牙和其他设备”中查看手柄是否连接成功,如图3所示。

使用手柄控制Unity及效果展示(1)

图3

也可以在Unity里菜单栏点击“Window-Analysis-Input Debugger”,如下图4所示。在Input Debug里的Devices里可以看到手柄是否连接成功,若有,则会在Devices里显示出来,双击手柄设备,则可以测试各个键及摇杆的情况,如图5所示。

使用手柄控制Unity及效果展示(1)

图4

使用手柄控制Unity及效果展示(1)
使用手柄控制Unity及效果展示(1)

图5

三 Input Actions的使用

在Project里选择Create选项中的input Actions选项,给其重命名为”Player Controls“,称其为播放器控件,我们可以在里面加上动画动作。在Action Maps里新建项目,重命名为”GamePlay“,在其对应的”Actions“里对应的动作重命名为”Grow“,在后面下拉箭头选择”Add Binding“,在其后面菜单栏里”Binding Properties“中的”Binding“选项里的”Path“进行选择,如图6所示,在Joystick里选择,或者直接用Listen,通过对手柄的控制来选择对键位的操纵,如图7所示。

使用手柄控制Unity及效果展示(1)

图6

使用手柄控制Unity及效果展示(1)

图7

在这一过程中,可能会遇到如图8所示,”Left Stick“、”Right Stick“这两个左右摇杆为灰色不能选中的情况,此时,单击如图9所示的”path“后的”T“按钮,将其变为输入模式,若想用”Left Stick“,可以先用”Listen“功能读取”<Gamepad>/leftStick/down“,然后将”/down“删掉即可。

使用手柄控制Unity及效果展示(1)

图8

使用手柄控制Unity及效果展示(1)

图9

在所有选择完毕后,双击”Player Controls“,如图10所示,将Generate C# Class选项勾选,选择Apply应用即可。

使用手柄控制Unity及效果展示(1)

图10

四 主要代码的解释及编写

新建一个C#脚本绑定到新建立方体Cube上,进行简单地编写来实现对Cube的控制,这里以控制Cube的LocalScale为例,代码如下,引用添加”using UnityEngine.InputSystem“

PlayerControls controls;

    void Awake()
    {
        controls = new PlayerControls();
        controls.Gameplay.Grow.performed += ctx => Grow();
    }

    void Grow()
    {
        transform.localScale *= 1.5f;
    }

    void OnEnable()
    {
        controls.Gameplay.Enable();
    }
    void OnDisable()
    {
        controls.Gameplay.Disable();
    }

当然,这仅仅只是控制立方体的变大,也可以用类似操作,使其变小。

若想用摇杆控制控制Cube的移动和旋转,则可以按照步骤三中,在”Actions“里添加新动作,重命名为”Move“和”Rotate“,其对应的绑定操作可以按步骤三中红色的注意事项进行,这里展示下我绑定完后的界面,如图11所示。

使用手柄控制Unity及效果展示(1)

图11

 Vector2 move;
 Vector2 rotate;
    void Awake()
    {
        controls = new PlayerControls();
        controls.Gameplay.Grow.performed += ctx => Grow();
        controls.Gameplay.Reduce.performed += ctx => Reduce();
        controls.Gameplay.Move.performed += ctx => move = ctx.ReadValue<Vector2>();
        controls.Gameplay.Move.canceled += ctx => move = Vector2.zero;
        controls.Gameplay.Rotate.performed+=ctx =>rotate = ctx.ReadValue<Vector2>();
        controls.Gameplay.Rotate.canceled += ctx => rotate = Vector2.zero;
    }

由于实时控制摇杆,我们在Update()函数里进行更新

   private void Update()
    {
        Vector2 m = new Vector2(move.x, move.y) * 1.5f * Time.deltaTime;
        transform.Translate(m, Space.World);

        Vector2 r = new Vector2(rotate.y, -rotate.x) * 120f * Time.deltaTime;
        transform.Rotate(r,Space.World);
    }

现在,就可以拿起手柄实现文章开头的控制效果啦。文章来源地址https://www.toymoban.com/news/detail-447638.html

到了这里,关于使用手柄控制Unity及效果展示(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包