Вы должны узнать больше о libgdx и о том, как работает его архитектура. The life cycle.
Что вы там делаете, это ожидание, и это то, что вам нужно НИКОГДА do. Метод render()
фактически получает значение float
, которое называется deltaTime
. Это количество времени, которое потребовалось для рендеринга последнего кадра. Вы можете использовать это значение, чтобы обновить позицию своих участников, исходя из времени, которое прошло.
actor.get(nb).moveBy(rx * deltaTime, ry * deltaTime);
Таким образом, вы перемещаете своего актора на (rx, ry) через 1 секунду. Если вы хотите, чтобы это произошло через 2 секунды, вы должны уменьшить скорость.
actor.get(nb).moveBy(rx/2 * deltaTime, ry/2 * deltaTime);
Таким образом, вы не полностью блокируете свою программу активным ожиданием, но вы перемещаете актера в соответствии с пройденным временем. Затем он будет отображаться и со следующим вызовом render(deltaTime)
, который libgdx будет делать сразу после этого, вы будете делать то же самое, пока не достигнете своего места назначения. Это нужно решать по-другому, потому что иначе ваш актер никогда не перестанет двигаться. Вы можете сделать это с помощью простого заявления if
, который остановит движение актера от определенной точки.
if (actor.getPosition().x < 10, actor.getPosition().y < 15) {
actor.get(nb).moveBy(rx/2 * deltaTime, ry/2 * deltaTime);
}