我试图为我的平台游戏建立一些界限。当我的玩家碰到右边的"墙"时,它就会越过舞台跳到另一边。然而,当我一开始撞到左边时,它就按照它应该做的那样停在了墙上。这是我的代码:
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);
}
}
你只需要把它放在一个进入帧事件处理程序中,而不是为每次发生的碰撞设置两个事件处理程序。