Получение акселерометра на входе - Defold Engine

Я пытаюсь использовать акселерометр для перемещения персонажа.

Но с использованием action.acc_x / action.acc_y / action.acc_z внутри on_input()Я могу получить информацию, только когда выполняется другое действие ("щелчок", "влево", "вправо")

Я хотел бы изменить скрипт, чтобы перемещать персонажа только с движением устройства

function on_input(self, action_id, action)

    label.set_text("info#action", "action: ".. action_id)
    label.set_text("info#info", "info: ".. tostring(action.acc_x) ..", ".. tostring(action.acc_y) ..", "..tostring(action.acc_z))
    if action.acc_x > 0 then
        self.player_direction.x = 1
    elseif action.acc_x < 0 then
        self.player_direction.x = -1
    else
        self.player_direction.x = 0
    end
end

github: game.script

1 ответ

Решение

Как я знаю, у Дефолда есть только одна ситуация, когда action_id является nil - это когда данные поступают с акселерометра. Это означает, что вы можете написать:

function on_input(self, action_id, action)
  if not action_id then
    label.set_text("info#action", "action: ".. tostring(action_id))
   label.set_text("info#info", "info: ".. tostring(action.acc_x) ..", ".. tostring(action.acc_y) ..", "..tostring(action.acc_z))
    if action.acc_x > 0 then
      self.player_direction.x = 1
    elseif action.acc_x < 0 then
      self.player_direction.x = -1
    else
      self.player_direction.x = 0
    end
  end
end

Не забыл заменить

label.set_text ("info # action", "action:"..action_id)

с

label.set_text("info#action", "action: ".. tostring(action_id))

Другие вопросы по тегам