首页 > 其他分享 >在Godot 3.X中添加触屏摇杆

在Godot 3.X中添加触屏摇杆

时间:2023-06-23 11:23:30浏览次数:35  
标签:Godot 0.2 摇杆 ui analogPosition action Input 触屏

开源项目地址:https://github.com/shinneider/godot_touchJoyPad

 

效果图:

 

 

下载项目

方法一

直接从godot assets lib下载

 

如图,直接下载自动安装即可

 

方法二

从github下载zip导入

 

 

 (如果此方法导入后提示素材丢失,按照提示修改插件目录的路径即可)

 

导入完成之后,在资源管理器中可以找到对应的场景

 

 

在需要的场景中的UI画布层新建一个ViewportContainer,然后将在里面实例化touchJoyPad.tscn

 此时摇杆效果如图

选中摇杆后,可以发现有这些属性可以设置

 

 它们分别为

Left Pad Style 摇杆风格:D-Pad按键 JoyStick摇杆

mapAnalogToDpad 是否将摇杆映射为按键(D-Pad)

visibleOnlyTouchscreen 只在触摸屏上可见

AnalogTapToShow 摇杆在点击屏幕时显示且可以在任意位置触发

配置结束后打开场景就能愉快地使用摇杆了!

D-Pad按键默认会自动将点击的动作映射到ui_XXX(left,right,up,down),摇杆可以通过建立节点,设置分组为JoyStick然后挂载脚本,使用建立analog_signal_change来监听摇杆事件,如下:

1 func analog_signal_change(analogPosition, analogName):
2    # When to move Analog, send signal to natives ui signal
3    # but implements a dead zone in 20% in the curso of Analog
4    # This is good for to avoid user mistakes in move hand
5    Input.action_press("ui_left") if analogPosition.x < -0.2 else Input.action_release("ui_left")
6    Input.action_press("ui_right") if analogPosition.x > 0.2 else Input.action_release("ui_right")
7    Input.action_press("ui_down") if analogPosition.y < -0.2 else Input.action_release("ui_down")
8    Input.action_press("ui_up") if analogPosition.y > 0.2 else Input.action_release("ui_up")

如果想要定制摇杆功能,可以修改源码,源码就在下图的位置:

 

标签:Godot,0.2,摇杆,ui,analogPosition,action,Input,触屏
From: https://www.cnblogs.com/wsdx233/p/17498877.html

相关文章

  • WPF 绑定command在触屏上操作时,即使点中button也可能不触发
    现象:WPF程序绑定的command在触摸屏上,点击button后,button绑定的事件偶尔会出现不响应的情况。确认100%点击有效,不会出现误触的情况。但是用鼠标点击,绝对不会出现这种现象。 原因:在非触屏环境,bingdingcommand是由点击来触发,即是使用鼠标等输入设备来执行点击触发command,调用......
  • Godot随便写写
    人物移动extendsCharacterBody2D#加速度constacc=25#最大加速度constmax_speed=80#摩擦力constfriction=80varmotion=Vector2()func_physics_process(delta): varinput=Vector2() #在godot中,X轴向右为正值 input.x=Input.get_action_strength("right")......
  • Godot 4.0 遮罩一个2D物体,使其部分显示
    本文针对Godot4.0。我也查到了Godot3.5如何实现遮罩,见这个链接https://ask.godotengine.org/3031/how-do-i-mask-a-sprite由于查到的大部分教程均针对3.5版本,特此提供4.0版本的教程。CanvasItem的遮罩功能Godot4.0的遮罩不是一个单独的节点,这个功能被包含在了一个常见的......
  • Godot的几个附加脚本和进行继承时比较特别的特性
    注:这是在Godot4.0中总结出的内容,并且语言是C#。特别的,下面有的特性和C#关系比较大。基本特性在Godot中,为某个节点编写特别的代码时,需要为节点新建脚本,或引用已有脚本。引用脚本时,填入脚本路径即可,相当于是复用代码了。新建脚本时,一般做法是新建一个自定义类型,并且......
  • godot游戏引擎的启动
    启动的入口代码在:platform/windows/godot_windows.cppWinMain()->main()intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){ godot_hinstance=hInstance; returnmain(0,nullptr);}main()->_main() intmain(int......
  • Godot 4.0 文件系统特性的总结
    关于文件系统,官方文档犹抱琵琶半遮面,有一些很独特的特性并没有集中地摆出来,导致用的时候晕头转向。这里总结了目前我发现的Godot文件系统的一些特性。这是专门针对导出后的,因为一些操作在编辑器里面能跑,但是拿出来就不起作用了。这里并没有"自定义Resource"之类关于Resour......
  • 如何在Godot中使用ParallaxBackground实现稳定的2d游戏背景[一问随笔]
    问题:我尝试给2d游戏添加静态的背景,当角色运动速度很快时相机的渲染就跟不上角色了,背景会发生这样巨大的位移。我将Camera2d节点和背景节点绑在一起,但根本无法解决这个问题。我还尝试制作天空盒子作为解决方案,有没有什么更好的方案?解决:Godot提供了两种节点ParallaxBa......
  • 摇杆,3D、2D图片英雄对应位置,滚轮放大缩小
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;usingUnityEngine.UI;///<summary>///英雄移动///</summary>publicclassyd:MonoBehaviour,IDragHandler,IEndDragHandler{publ......
  • 解决Godot使用VsCode编写C#代码,智能提示不见了[一问随笔]
    问题:我的项目采用了godot+visualstudiocode+C#,有天突然换引擎,从Godot4.0.0升级到Godot4.0.2,visualstudiocode突然不给代码提示了,甚是奇怪。查看报错发现这样一句话找不到指定的sdk“godot.net.sdk/4.0.2”糟了!不会这个版本不支持用vscode写代码吧!解决方式:......
  • 55个手机JAVA全屏触屏游戏
    55个游戏我就不一一列举名字了,适合所有触屏手机,全触屏游戏,大部分测试通过,太多了我也没一个一个看,保证能玩就行了thunder://QUFodHRwOi8vd3d3Ljc4eXguY29tL3NvcnQvbWRvd24vMS81NSVCOCVGNiVDQSVENiVCQiVGQUpBVkElQzglQUIlQzYlQzElQjQlQTUlQzYlQzElRDMlQ0UlQ0YlQjcucmFyWlo=......