Godot TouchScreen считыватель - PullRequest
       18

Godot TouchScreen считыватель

1 голос
/ 11 января 2020

Я делаю простую android мобильную игру в 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.

Есть идеи?

1 Ответ

2 голосов
/ 11 января 2020

Этот код учитывает только щелчки, а не касания экрана, чтобы исправить, что у вас есть два варианта:

  • Go до Проект> Настройки проекта> Устройства ввода> Указание и включите опцию 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())

В последнем решении код учитывает только прикосновения к экрану, поэтому вы не сможете проверить его на P C, если только вы не go to Project> Project Settings > Устройства ввода> Навигация и включение Эмуляция касания от мыши

...