У меня есть спрайт рендеринга, который рассказывает моему игровому движку, как визуализировать спрайт. Метод обновления в этом классе вызывается около 120
раз в секунду. Пробег через лист спрайтов с такой скоростью происходит слишком быстро.Играйте на листе спрайта на холсте медленнее, чем частота кадров
В моем классе спрайтов у меня есть свойство duration
, которое сообщает рендереру, сколько секунд должен играть спрайт. Как только он достигнет последнего кадра, он должен начать все заново.
Я точно не знаю, как рассчитать это с update
который работает 120
раз в секунду, и спрайт лист, который должен длиться x
секунд, пока он начнет снова.
class SpriteRenderer extends Component {
// The current frame
public frame: number = 0;
// The sprite reference
public sprite: Sprite = null;
update() {
// Number of frames in the sprite sheet
let frames = this.sprite.frames;
if (frames > 0) {
// The time in seconds the sprite sheet should play
let duration = this.sprite.duration;
if (/* What should go here? */) {
this.frame++;
if (this.frame > frames - 1) {
this.frame = 0;
}
}
}
}
}
Довольно близко, 'this.currentTime + = 0,01;' в моем случае должен быть 'this.currentTime + = Time.deltaTime;' 'this.udateTime' будет' duration'. Установка моей продолжительности на «1», она играет 1 кадр в секунду, что ближе, чем было. –
Да, я собирался обновить свой ответ, чтобы рассчитать время, которое нужно добавить в секунду и сколько времени это займет. –
Ближе! Мой, если теперь выглядит так: if (this.currentTime> duration * Time.deltaTime) 'my' deltaTime' около '0,008'. Это все еще немного быстро. Если я установил продолжительность до 5, это примерно 1 секунда ... –