我正试图为我的平台游戏建立一些界限。发生的事情是当我的球员击中右边的“墙”时,它跳过舞台到达对面。然而,当我开始向左侧开始时,它会完成预期并停在墙上。这是我的代码:
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;
}
} (我知道他们不需要分开,我只是觉得我会尝试看看它是否会起作用。顶部的那个工作完美,底部的那个有问题) 谢谢!
答案 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事件处理程序中,而不是你所拥有的两个事件处理程序,它们似乎适用于每次发生的碰撞。