Ich bin neu in der Spieleentwicklung und suche Hilfe bei der Verbesserung meines Sprunghandlings für ein einfaches Side-Scrolling-Spiel, das ich erstellt habe. Ich möchte, dass der Sprung länger dauert, wenn die Taste über die gesamte Länge des Sprunges gedrückt gehalten wird. Andernfalls wird der Sprung nicht so lang, wenn die Taste gedrückt wird. Derzeit gehe ich wie folgt mit dem Springen um:
Player.prototype.jump = function () {
// Player pressed jump key
if (this.isJumping === true)
{
// Set sprite to jump state
this.settings.slice = 250;
if (this.isFalling === true)
{
// Player let go of jump key, increase rate of fall
this.settings.y -= this.velocity;
this.velocity -= this.settings.gravity * 2;
}
else
{
// Player is holding down jump key
this.settings.y -= this.velocity;
this.velocity -= this.settings.gravity;
}
}
if (this.settings.y >= 240)
{
// Player is on the ground
this.isJumping = false;
this.isFalling = false;
this.velocity = this.settings.maxVelocity;
this.settings.y = 240;
}
}
Ich setze isJumping auf Keydown und isFalling auf Keyup. Während es für den einfachen Gebrauch in Ordnung ist, suche ich nach einem besseren Weg, um mit Springen und Schwerkraft umzugehen. Es ist ein bisschen fehlerhaft, wenn die Schwerkraft erhöht wird (weshalb ich die letzte y-Einstellung in die letzte if-Bedingung setzen musste), also würde ich gerne einen besseren Weg finden, dies zu tun. Wo sind einige Ressourcen, die ich mir ansehen könnte, um besser zu verstehen, wie man mit Springen und Schwerkraft umgeht? Was ist ein besserer Ansatz, um damit umzugehen? Wie gesagt, ich bin neu in der Spieleentwicklung, also könnte ich es völlig falsch machen. Jede Hilfe wäre dankbar.
deltaTime
, um sicherzustellen, dass ich es richtig verstehe. Wäre es nur eine Sekunde geteilt durch meine Framerate? Wenn zum Beispiel meine Bilder pro Sekunde 30 sind,deltaTime
wäre das dann 1/30 oder .033?dt = getTotalElapsedSeconds() - totalElapsedSecondsLastFrame;