AnteJR / UNIL-GameJam

GameJam pour la carte de voeux 2023
0 stars 0 forks source link

Empêcher l'accélération de bloquer l'animation de dazing #17

Closed ipante closed 1 year ago

AnteJR commented 1 year ago

J'ai eu ce bug mais je ne saurais dire exactement pourquoi il a lieu. Est-ce que tu as des pistes ?

ipante commented 1 year ago

Je vois qu'il y a une tentative de résolution dans player.js ligne 53. Mais le console.log de la ligne 56 n'arrive jamais (ni l'appel à l'animation up). A mon avis, le dazeTimer est réinitialisé ailleurs dans le code.

// the dazeTimer decreases over time, and is clamped at 0
        if (player.dazeTimer > 0) {
            player.dazeTimer -= dt();
            if (player.dazeTimer < 0) {
                console.log("ça arrive")
                player.dazeTimer = 0;
                player.play("up");

            }
        }

De manière générale, je me demande si un booléen "isDazing = false" qui devient true au contact et redevient false au bout d'un temps calculé avec time (plutôt que dt()) ne serait pas préférable et moins gourmand en performances.

ipante commented 1 year ago

Résolu en testant < 0.18 plutôt que < 0, qui ne se réalise jamais. C'est un quick fix : je pense qu'un booléen serait plus indiqué. Mais je ferme pour le moment.

florian-rieder commented 1 year ago

C'était une erreur de logique ! Comme la condition < 0 était dans un bloc > 0, ça ne pouvait jamais être vrai. Je l'ai remplacé par un bloc else, et un booléen pour éviter de relancer l'animation à chaque frame !