Получение акселерометра на входе - 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))