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

时间:2013-06-10 19:43:24

标签: actionscript collision-detection hittest

我正试图为我的平台游戏建立一些界限。发生的事情是当我的球员击中右边的“墙”时,它跳过舞台到达对面。然而,当我开始向左侧开始时,它会完成预期并停在墙上。这是我的代码:

stage.addEventListener(Event.ENTER_FRAME,handleCollision);

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

} (我知道他们不需要分开,我只是觉得我会尝试看看它是否会起作用。顶部的那个工作完美,底部的那个有问题)  谢谢!

1 个答案:

答案 0 :(得分:0)

使用stage.width而不是stage.x,正如Josh建议的那样。还要确保右侧墙是“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事件处理程序中,而不是你所拥有的两个事件处理程序,它们似乎适用于每次发生的碰撞。