Canvas Gravité et Détection... [Résolu]

Messages postés
39
Date d'inscription
lundi 10 avril 2017
Dernière intervention
8 mai 2017
- - Dernière réponse : @karamel
Messages postés
1663
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
3 novembre 2018
- 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...
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
1663
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
3 novembre 2018
1
Merci
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

Merci @karamel 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de @karamel

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.