新手玩家自制小摇杆,欢迎提意见

新手玩家自制小摇杆,欢迎提优化意见。YaoGanTest.zip (11.7 KB)

你这样做,除非都没别的UI组件,否则一旦事件被别的截获去,会注定不灵敏。你可以考虑在最上层搞一个透明的层,在这里去截取事件,整个层做成事件不穿透类型。哪些事件需要转发,哪些不转发,完全自己控制,这样的话,灵敏度绝对很高的。

那我尝试做成插件形式,触摸由外层负责,提供对应的接口。

经过大佬的建议,我改动了一下,稍微把触摸事件做成接口形式,然后顺便加了左下方区域触摸范围,除了左下角触摸范围以外是无效的,当然这个触摸范围也是可定制的。看看还有没有什么特别好的建议。demo附上:YaoGanTest.zip (16.5 KB)

部分代码图也附上:
image

摇杆的参数可以有多个,通用各种游戏。
例如:坐标(x,y):控制物体xy方向实时速度,方向(4方向,8方向):控制角色方向,角度:控制攻击/发射角度,力度:控制移动速率/抛物距离等。

还可以适当考虑其它各种因素,例如:
摇杆要能随时显示和隐藏。
摇杆可以有固定位置、点击位置、拖动位置等多种操作方式。
摇杆中心点小范围内不触发摇杆,避免误触和过于灵敏。
增加键盘监听,方便测试。

另外,你这摇杆,点击后大圆出现在点击位置,小圆还在原地。
还有,计算距离不需要使用公式,直接 坐标.length 就是距离。
至于触发区域,我个人建议是覆盖在摇杆上的一个较大的空node触发,而不是监听全局的事件。

想问一下这个摇杆可拖动位置指的是什么呢。

点击时,摇杆立即出现在点击位置。拖动时,如果拖动距离较远,摇杆可以跟随拖动。

相比点击位置摇杆,优势是如果手指拖动较远距离,如果需要触发反向运动,
点击位置摇杆需要完全回到初始位置,距离有点远。
如果是随动摇杆,可以较快的触发其它方向。

这个功能比较小众,但有些游戏用起来也挺好用的。