touch - Godot TouchScreen 滑动检测器
问题描述
我正在用 Godot3.1 制作一个简单的安卓手机游戏。我需要制作一个滑动检测器来确定玩家是否滑动以及朝哪个方向(左或右)滑动。
我试过这个:
var swipe_start = null
var minimum_drag = 100
func _unhandled_input(event):
if event.is_action_pressed("click"):
swipe_start = event.get_position()
if event.is_action_released("click"):
_calculate_swipe(event.get_position())
func _calculate_swipe(swipe_end):
if swipe_start == null:
return
var swipe = swipe_end - swipe_start
if abs(swipe.x) > minimum_drag:
if swipe.x > 0:
_right()
else:
_left()
当您用鼠标单击并滑动时,此功能有效,但在您的 Android 手机上播放时无效。
有任何想法吗?
解决方案
该代码仅考虑点击而不考虑屏幕触摸,以纠正您有两个选择:
转到Project > Project Settings > Input Devices > Pointing并打开Emulate Mouse From Touch选项。
或使用以下代码:
func _unhandled_input(event):
if event is InputEventScreenTouch:
if event.pressed:
swipe_start = event.get_position()
else:
_calculate_swipe(event.get_position())
代替:
func _unhandled_input(event):
if event.is_action_pressed("click"):
swipe_start = event.get_position()
if event.is_action_released("click"):
_calculate_swipe(event.get_position())
使用最后一个解决方案,代码仅考虑屏幕触摸,因此您将无法在 PC 上测试它,除非您转到项目 > 项目设置 > 输入设备 > 指向并打开从鼠标模拟触摸
推荐阅读
- c++ - 为什么列表迭代器在 SGI STL 的实现中具有三个模板参数?
- phonegap - phonegap 开发者应用保持下载状态
- javascript - contenteditable 在按键末尾添加多个空格
- c# - 如何在 EntityFramework 中禁用 DynamicProxies
- c++ - Visual Studio 2017 Linux 远程调试(gdbserver)
- java - Codename one-Converting to new gui builder 错误
- javascript - 谷歌地图显示失真
- javascript - 可以将命名变量用作多个参数吗?
- apache-spark - 什么是 datanucleus DELETEME* 表以及它们何时创建和删除
- css - 自定义 Mat-checkbox Indeterminate 图标