私はスプライトをレンダリングする方法をゲームエンジンに知らせるスプライトレンダラーを持っています。このクラスの更新メソッドは約120
回/秒と呼ばれます。そのスピードでスプライトシートを実行するのは速すぎます。フレームレートよりも遅いキャンバスにスプライトシートを表示
私のスプライトクラスには、duration
と呼ばれるプロパティがあります。このプロパティは、スプライトが再生される秒数をレンダラーに通知します。最後のフレームに達したら、最初からやり直す必要があります。
を1秒間実行すると、最初に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'は次のようになります'継続時間。期間を「1」に設定すると、1秒間に1フレーム再生され、それよりも近くになります。 –
ええ、1秒間に追加する時間とそれにかかる時間を計算するために答えを更新しようとしていました。 –
近くに!私の今の場合は ''(this.currentTime> duration * Time.deltaTime) '私の' deltaTime'は '0.008'のようになります。それはまだ少し速いです。期間を5に設定すると、約1秒です。 –