当我的玩家击中右边的物体时,它会越过屏幕跳到左边



我试图为我的平台游戏建立一些界限。当我的玩家碰到右边的"墙"时,它就会越过舞台跳到另一边。然而,当我一开始撞到左边时,它就按照它应该做的那样停在了墙上。这是我的代码:

stage.addEventListener(Event.ENTER_FRAME,handleCollision);

函数handleCollision(e:Event):void{

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

}stage.addEventListener (Event.ENTER_FRAME碰撞);

function Collision(e:Event):void{

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

}(我知道他们不需要分开,我只是想尝试一下,看看是否有效。上面的那个工作得很好,下面的那个有点毛病。谢谢!

使用舞台。宽度而不是阶段。按照乔希的建议。同时确保右边的墙是"stage.width-(player.width/2)"

试试

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);
  }
}

你只需要把它放在一个进入帧事件处理程序中,而不是为每次发生的碰撞设置两个事件处理程序。

最新更新