У меня есть плеер, который перемещается в космос. Так как это пространство, то нет гравитации, поэтому нет параболической траектории. Игрок просто идет по горизонтальной линии слева направо. Игрок на самом деле не движется, но фон, так что он выглядит так, как будто он есть. Значение x фиксировано.Corona SDK: Перемещение игрока вверх и вниз
У меня есть две кнопки, которые помогают игроку избежать препятствий, таких как астероиды. Одна кнопка дает игроку усилие вверх, а другое - нисходящую силу. Ниже перечислены функции, вызываемые при нажатии этих кнопок.
function moveUp(event) if event.phase == "ended" thenplayer:applyForce(0, 8, player.x, player.y) player:setSequence("jump") jumpChannel = audio.play(jumpSound) end return true end
функция MoveDown (событие) если event.phase == "закончилась", то
player:applyForce(0, -8, player.x, player.y) player:setSequence("jump") jumpChannel = audio.play(jumpSound) end return true end
Проблема с этой реализации является то, что всякий раз, когда применяется сила, игрок продолжает идти в это направление. Затем вы должны применить силу в противоположном направлении, и он будет продолжать двигаться в этом направлении навсегда. Это не то, чего я хочу. То, что я хочу это:
при нажатии UP, игрок выходит на определенное значение (скажем, 50 рх) в Y. Тогда игрок продолжает идти в горизонтальном направлении слева направо на новой высоте.
При нажатии кнопки DOWN игрок понижает определенное значение. Затем игрок продолжает двигаться в горизонтальном направлении слева направо на новой высоте.
Каков наилучший способ для этого? Могу ли я это сделать с помощью функции applyForce или есть другой метод? Спасибо заранее за ваше время!
Использование силы всегда более плавным и реалистичным. Коэффициент linearDamping работает как шарм. Спасибо, чувак, я очень ценю это! – Henok