Forums Développement Multimédia

Aller au contenu

[Résolu] Problème de déplacement de balle

CODE

2 réponses à ce sujet

#1 cibermix

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 07 April 2012 - 16:51 PM

Bonjour à tous !

En bref j'essaye de créer un petit jeu qui reprend quelques trucs du snake, où on se déplace avec seulement 2 touches. Pour avoir un exemple du jeu que je veux faire:
http://achtungdiekurve.net/

Pour l'instant je me base sur le déplacement d'une "balle", elle avance continuellement et si j'appuie sur gauche, je me déplace selon une trajectoire circulaire.
Si j'appuie seulement sur gauche ça marche niquel, mais une fois que j'appuie sur droite, le déplacement s'inverse. Mais si j'appuie une nouvelle fois sur droite ça marche niquel. Et si je continue d'appuyer sur droite ça marche aussi, par contre si je rebascule sur la touche gauche, ça me ré-inverse la direction.

Alors j'ai trouver d'où venait le problème, par contre je n'ai pas trouver la solution pour le régler ! Pourtant j'ai essayer pas mal de choses au niveau trigonométrique mais rien à faire je n'y arrive pas.



Voici ce que ça donne quand je n'appuie que sur gauche (ça marche):
Image IPB

Ici j'ai appuyer plusieurs fois sur droite, on remarque le problème au premier appui... :
Image IPB

Voilà, j'éspère que vous pourrez m'aider à trouver la solution ! Je suis sûr que c'est un tout petit problème mathématique, mais je n'arrive pas à mettre la main sur la bonne solution. :/

Bonne soirée ;)

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 07 April 2012 - 22:31 PM

Salut,

Avec un petit extrait de ton code on pourrait certainement t'en dire plus.

J'ai un eu de temps ce soir donc voilà un exemple :


// Deplacement du Snake
function main(e:Event):void {

        // Touches de direction
        if (tournerD) angleSnake += 20;
        if (tournerG) angleSnake -= 20;
        angleSnake = angleSnake%360;                                           
               
        // Deplace la tête
        snake.x += vitesse*Math.cos(angleSnake*(Math.PI/180));
        snake.y += vitesse*Math.sin(angleSnake*(Math.PI/180));
       
        // Vérifie si la tête touche un bord
        if (snake.x<0 || snake.x>320 || snake.y<0 || snake.y>240) {
                snake.x = 160;
                snake.y = 120;
                trace("perdu");
        }
}
 



- Afficher le SWF -
Fichier joint  snake.swf   967 octets   15 téléchargement(s)

Fichier(s) joint(s)

  • Fichier joint  snake.fla   32 Ko   8 téléchargement(s)


#3 cibermix

    Ceinture Blanche

  • Members
  • Pip
  • 11 messages

Posté 07 April 2012 - 23:08 PM

Merci de la réponse mais comme indiqué dans le titre, le problème à été résolu ^^
Je vais étudier votre solution pour voir si elle est plus optimisé que celle que j'ai trouvé :)

Bonne soirée ;)



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)