Как я могу оживить спрайтов в Луа, когда я нажимаю стрелку вправо?
Я новичок в Defold и кодировании, я следую видеоурок от Gamefromscratch для анимации спрайтов, который https://www.youtube.com/watch?v=ha1Wq2FB7L0&t=5s buto не может заставить его двигаться, когда я нажмите стрелку вправо, он просто стоит в режиме ожидания.
local currentAnimation = 0
function init(self)
msg.post(".", "acquire_input_focus")
end
function final(self)
-- Add finalization code here
-- Remove this function if not needed
end
function update(self, dt)
end
function on_message(self, message_id, message, sender)
-- Add message-handling code here
-- Remove this function if not needed
end
function on_input(self, action_id, action)
if aciton_id == hash("right") and action.pressed == true then
if self.currentAnimation == 1 then
msg.post("#sprite", "play_animation", {id = hash("runRight")})
self.currentAnimation = 0
else
msg.post("#sprite", "play_animation", {id = hash("idle")})
self.currentAnimation = 1
end
end
end
Это код, как я уже сказал, когда я нажимаю стрелку вправо, он не перемещается как учебник.
1 ответ
Решение
Вы неправильно написали слово 'action' в первом операторе if в функции on_input.
Этот скрипт должен работать:
local currentAnimation = 0
function init(self)
msg.post(".", "acquire_input_focus")
end
function final(self)
-- Add finalization code here
-- Remove this function if not needed
end
function update(self, dt)
end
function on_message(self, message_id, message, sender)
-- Add message-handling code here
-- Remove this function if not needed
end
function on_input(self, action_id, action)
if action_id == hash("right") and action.pressed == true then
if self.currentAnimation == 1 then
msg.post("#sprite", "play_animation", {id = hash("runRight")})
self.currentAnimation = 0
else
msg.post("#sprite", "play_animation", {id = hash("idle")})
self.currentAnimation = 1
end
return true
end
end