0

我正在尝试为我的平台游戏建立一些界限。发生的情况是,当我的播放器撞到右侧的“墙”时,它会跳过舞台到对面。然而,当我从左侧开始时,它会做它应该做的事情并停在墙上。这是我的代码:

stage.addEventListener(Event.ENTER_FRAME,handleCollision);

函数句柄碰撞(e:事件):无效{

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

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

函数碰撞(e:事件):无效{

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

(我知道它们不需要分开,我只是想我会尝试一下,看看它是否有效。顶部的完美运行,底部的有问题)谢谢!

4

1 回答 1

0

正如 Josh 建议的那样,使用 stage.width 而不是 stage.x。还要确保右墙是“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);
  }
}

而且您只需将其放入一个 Enter Frame 事件处理程序中,而不是您拥有的两个似乎是针对发生的每次碰撞的事件处理程序。

于 2013-06-10T21:43:05.857 回答