Canvas Gravité et Détection...

Résolu
iamtheone Messages postés 39 Date d'inscription lundi 10 avril 2017 Statut Membre Dernière intervention 8 mai 2017 - 30 avril 2017 à 16:19
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 - 30 avril 2017 à 23:08
Bonjour,
J'ai recréé une sorte de flappy bird, qui fonctionne très bien mais il y a dans le code un petit détail qui me chiffonne.
Mon code fait 240 lignes environ donc je vais seulement copier les bouts propres au problème.
Je précise que pac et stru sont deux objets, pac est l'oiseau et stru le sol.
Je souhaite tester quand pac touche stru afin de créer un effet de rebond. Pour celà j'ai ecris une fonction touchBottom.
Voici la condition :
function touchBottom(a, b) {
       
    if (a.y + a.height/2 >= b.y) {
        if (a.x + a.height/2 >= b.x && a.x - a.height/2 <= b.x + b.width) {
            return true;
        }
    }
}

Voici le test :
//touch or not 
    if (touchBottom(pac, stru)) {
        pac.y = stru.y - pac.height/2;
        sGravity = - (sGravity * pac.bounce);
    } if (touchCanvasTop(pac)) {
        pac.y = pac.height/2;
    } 

PS: x et y de l'objet pac sont au centre de celui-ci.

Bref. Ce qui se passe avec cette fonction de verification c'est qu'elle verifie la position de pac après que pac soit dessiné sur le canvas. Ce qui ramène à mon problème : même avec une update 60x par secs j'arrive à voir l'objet pac à demi dans le sol... Celà car la gravité fait augmenter sa vitesse de chute et donc lorsque pac tombe de haut, il peut arriver sur le sol (stru) avec une vitesse de par exemple 11px par 1000/60s et alors il peut être sous le y de stru avant d'être translate pile à l'ordonnée y de stru...
Et jaimerais que ça ne puisse pas arriver... Que jamais pac ne puisse être dans stru. J'espère que j'ai bien expliqué, merci d'avoir lu.
PS: j'avais pensé à verifier non pas les coordonnés actuelles de l'objet pac mais celle qui suivront...

1 réponse

@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
30 avril 2017 à 23:08
bonjour

pour évité ceci fait un teste de position juste avant de deplacer l'element si la position calculé est supérieur a la position du sol positionne l'element comme tu le souhaite
1
Rejoignez-nous