2013-06-10 1 views
0

J'essaie d'établir des limites pour mon jeu de plateforme. Ce qui se passe est quand mon joueur frappe le "mur" à droite il saute sur la scène du côté opposé. Quand je frappe le côté gauche pour commencer, cependant, il fait ce qu'il est censé faire et s'arrête au mur. Ceci est mon code:quand mon joueur frappe un objet sur la droite, il saute à travers l'écran vers la gauche

stage.addEventListener(Event.ENTER_FRAME,handleCollision); 

fonction handleCollision (e: Event): void {

if(player.hitTestObject(wall2)) 
    { 
     player.x = stage.x + player.width/2; 
    } 

} stage.addEventListener (Event.ENTER_FRAME, Collision);

fonction Collision (e: Event):. Void {

if(player.hitTestObject(side)) 
    { 
     player.x = stage.x + player.width/2; 
    } 

} (je sais qu'ils ne doivent pas être séparés, je pensais juste que je voudrais essayer pour voir si cela fonctionnerait Le un sur le dessus fonctionne parfaitement, celui sur le fond a quelque chose de mal avec) Merci!

+0

est stage.x une valeur qui varie en fonction de l'endroit où vous êtes? Si stage.x est statique, tous les deux seront évalués à la même position et cela se comprendra comme vous le voyez. – Josh

Répondre

0

Utilisez stage.width au lieu de stage.x comme suggéré par Josh. Assurez-vous également que le mur de droite, il est « stage.width- (player.width/2) »

Essayez quelque chose comme

function collideWalls():void{ 
    if(player.x<0){ 
    //collision is on the left wall 
    player.x = player.width*.5; 
    }else if(player.x>stage.width-(player.width*.5)){ 
    //collision is on the right wall 
    player.x = stage.width-(player.width*.5); 
    } 
} 

Et il vous suffit de le mettre dans un gestionnaire d'événements Enter Frame plutôt que les deux que vous avez qui semblent être pour chaque collision qui se produit.

+0

merci mec cela a parfaitement fonctionné – Ethan

Questions connexes