1

Je fais un jeu de plateforme. Voici ce que j'ai jusqu'ici: http://megaswf.com/s/2486396 (se déplacer et sauter avec les touches fléchées). J'utilise les données bitmap du sol pour tester les collisions avec les coordonnées du joueur, et le joueur s'enfonce dans le sol de quelques pixels (surtout lorsque je marche en montée). Pour éviter cela, je veux que les coordonnées y du joueur changent instantanément pour que le joueur soit assis sur le sol. Voici ce que je travaille sur:AS3 - Trouver la coordonnée y la plus élevée pour une coordonnée x donnée dans BitmapData?

if (groundClipBmpData.hitTest(rLoc, 255, bLocFuture)) { 
     playerClip.y = ??? 
    } 

Je veux du joueur de coordonnées y changer pour devenir le plus élevé pixel de l'groundClipBmpData au x du joueur de coordonnées.

Comment est-ce que je peux faire ceci?

Répondre

0

Comme je l'ai dit dans l'autre question:

Utilisation while au lieu de if

Comme ceci:

while(groundClipBmpData.hitTest(rLoc, 255, playerClipBmpData, bLocFuture, 255)) 
{ 
     playerClip.y--; 
} 
playerClip.y++; 

Le meilleur moyen serait de calculer et de stocker les valeurs de coordonnées le plus à l'avance à l'intérieur d'un tableau, puis utilisez la position «x» du joueur pour déterminer le «y» du sol.

+0

Merci :) Cela fonctionne. Cependant, je ne suis pas sûr que ce soit la solution la plus rapide. – Ashley

+0

probablement pas, voulez-vous un plus rapide? Je ne m'inquiéterais pas à moins que vous découvriez que c'est un goulot d'étranglement dans votre jeu. Vous pouvez vérifier combien de temps il faut à l'ordinateur en utilisant getTimer() avant et après la boucle et en soustrayant: after-before: cela vous donnera le nombre de millisecondes qu'il faut, je suppose que ce sera 0. – zehelvion

Questions connexes