Как перемещать спрайт с шагом, но медленно - PullRequest
0 голосов
/ 08 октября 2011

Я работаю над невероятно простой змейкой на C # с использованием XNA.Проблема в том, что я хочу, чтобы спрайт двигался с шагом, но не настолько быстро, насколько это возможно.Поскольку спрайт имеет размер 16x16 пикселей, он перемещается с шагом 16 пикселей.Например, если текущее направление правильное, эта строка выполняет:

playerPosition.X += 16;

Это прекрасно работает, но движется с невероятной скоростью.Как я собираюсь заставить его двигаться медленнее?Как 16 пикселей каждые 1/2 секунды.

Ответы [ 2 ]

0 голосов
/ 08 октября 2011

Прошло много времени с тех пор, как я последний раз использовал XNA, но из того, что я помню в игровом цикле, когда вы выполняете свои действия, у вас есть доступ к свойству, которое по существу прошло с момента последнего действия. Вы должны использовать это и уменьшить ваше движение 16 пикселей, чтобы пойти так далеко, как это было бы в этой части секунды.

Большую часть времени вы можете просто разделить на 60 и использовать это в качестве своей новой скорости движения и быть в полной безопасности. так что 16/60 для вашего пиксельного движения за кадр, если вы хотите перемещать 16 пикселей в секунду.

0 голосов
/ 08 октября 2011

Вы можете сохранить внутренний счетчик «время с момента последнего перемещения», добавлять к нему каждый кадр, и, как только он преодолеет установленный порог, выполнить перемещение и сбросить счетчик.

Game.Update проходит вGameTime объект, который можно использовать для определения времени, прошедшего с момента последнего вызова Update.

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