手柄组件

手柄组件允许用户使用手柄控制角色的行动。本次教程将为大家详细讲解手柄组件组件的使用方法。
点我下载实例工程

添加组件、修改属性

在对象库右键,或点击引擎上方组件栏的展开按钮,找到手柄组件并添加。


对象库内选中手柄组件,可以在右侧修改属性

当连接手柄后,可以自动通过摇杆控制场景内所有拥有【平台跳跃】或【八方向运动】能力的对象的移动。如果不希望默认被手柄控制,可以在对应的能力下面取消勾选【默认控制】。

  • 摇杆无视区域: 当手柄默认控制角色移动时,摇杆的移动低于该值,则不会触发移动。范围从0~100。可以避免轻微触碰摇杆也会导致角色移动的情况。需要注意,该属性不会影响事件表的条件判断,只会影响不使用事件表控制的角色移动

添加移动角色和地面


对象库中添加两个精灵,主角1和平台砖块。 给主角1添加【平台跳跃能力】、给平台砖块添加【刚体】。 并放入场景。



此时预览项目,如果平台跳跃能力勾选了【默认控制】,则可以直接通过手柄摇杆控制玩家的左右移动。

使用事件表控制移动

禁用默认控制

先取消勾选平台跳跃能力的【默认控制】,避免不通过事件表也可以直接控制玩家移动。

控制左右移动

添加事件,条件选择【摇杆移动判断】,该条件在控制手柄摇杆移动特定距离时触发。

  • 【手柄】:代表要判断哪一个手柄的操作。 游戏可以同时插入多个手柄,第一个手柄的编号是0,第二个是1,以此类推。
  • 【维度】:代表具体要判断的摇杆运动方向

通常来说,只要摇杆的移动距离大于0就可以控制玩家移动。但建议将判断值设置的大一点(本教程为25)。 由于不同手柄的型号、磨损等缘故,可能会出现静止时摇杆移动距离不为0从而导致角色移动。因此建议设置一个大一点的值,确保不会出现误操作。

水平方向的值大于0时代表摇杆向右推,小于0代表向左。
垂直方向的值大于0代表摇杆向下推,小于0代表向上。

当摇杆向右时,操作主角向右移动,反之向左。

控制跳跃

手柄条件:按下某键时,可以在按下手柄的某个按键时,触发条件。

当第一个手柄按下A键时,进行跳跃动作。


这样就写好了基本的移动和跳跃动作,预览游戏插上手柄,就可以控制玩家的移动。

此外也可以通过按键编号来判断按下的按键

编号对应的按键可以在【按下某键时】的条件里找到,如下图所示,A、B、X、Y等按键的编号依次为0、1、2、3…

判断是否支持手柄。

手柄组件还可以判断当前运行平台是否支持手柄操作,以及是否有手柄连接。使用对应的判断条件即可。

拓展:使用手柄映射键盘操作。

如果在之前的游戏开发中,已经使用了键盘控制玩家移动,不需要修改原有逻辑就可以改为手柄控制。
键盘组件有【模拟按键】的操作,可以触发对应的【键盘组件条件】。

例如:键盘按下J时,进行攻击。 那么手柄只需要写:当手柄按键按下A时,模拟键盘按下J。


需要注意,使用模拟按键动作时,模拟了按下,就要模拟松开,否则就会无法再次触发按下条件。

检测手柄链接

可以通过特定条件检测当前平台是否支持手柄或手柄是否连接

需要注意,【手柄链接】的判定,只有当按下手柄的某按键后才会判定连接。如果你的手柄只连接了电脑没有按下任何按键,就不会触发【有手柄连接】的条件。 同理,一些判定手柄信息的表达式,必须在手柄连接后才能获取

表达式获取手柄信息

下面列出手柄表达式的用法

  • 手柄.gamepadcount : 显示当前连接并且激活的手柄数量

  • 手柄.gamepadid():会显示特定编号手柄的型号,只有在激活后才可以显示,必须先按下一次手柄按键。 参数为手柄的编号,第一个手柄是0,第二个手柄是1,以此类推。

  • 手柄.gamepadaxes():显示指定编号手柄的所有摇杆数据。Axis 0是左摇杆的左右方向移动距离,Axis 1是左摇杆的上下方向,2是右摇杆的左右方向,3是右摇杆的上下方向。 距离从-100到100。 摇杆不移动时中心点是的移动距离是0,但由于部分手柄差异和磨损问题,可能会导致摇杆不移动时移动距离不为0的情况。

  • 手柄.rawbutton():显示指定编号手柄的指定按键按下情况。按下情况从0~1,0代表没有按下,1代表完全按下。

  • 手柄.rawaxis():显示指定编号手柄的摇杆在某方向上的原始移动值,从0~1。只会返回左侧摇杆的值。 index参数代表检测的方向,0代表左右,1代表上下。

  • 手柄.rawbuttoncount()/手柄.rawaxiscount():显示指定编号手柄的按键数量以及摇杆数量。

  • 手柄.butto()/手柄.axis():效果与rawbutton()和rawaxis()类似,检测特定按键或摇杆方向的移动值,区别在于该表达式返回0~100而不是0-1

  • 手柄.lastbutton():返回上一个按下或按住的按键编号。可以用该表达式搭配【按下某编号按键时】,来实现自定义手柄按键。

该教程是否对你有用?
友情链接
ResDIY素材自助生成平台
一游说
联系方式
QQ:2967340017
邮箱:huanjingserv@xingfeiinc.com
公司地址:广州市天河区中山大道西238号301房(部位:自编之十二)

官方交流群

扫描二维码进入

交流群①

640215025

官方交流群

扫描二维码进入

交流群②

610394080

友情链接
联系我们
QQ:2967340017
Q群1(已满):640215025
Q群2:610394080
邮箱:huanjingserv@xingfeiinc.com
公司地址:广州市天河区中山大道西238号301房(部位:自编之十二)

粤ICP备2021062879号-6 《服务协议》

Copyright © 2019 广州新言信息科技有限公司 版权所有