我试图与多个墙壁进行伪3D碰撞。它在一定程度上起作用: 我可以与每面墙的两侧碰撞
但只在其中一面墙上,如果我要去顶部,它会像this那样位于矩形的后面,但在第二个矩形上,我会像this一样高于它{我3 39;为什么会发生这种情况(我是AS3的初学者)。使用跟踪,它表示玩家位于第0层,而墙壁位于第2层,但球仍然在墙上方。
编辑:我正在使用flashdevelop incase来改变任何东西
编辑:更改了代码,它工作正常,但忽略了第二面墙,它打印了它的名字,但没有更改布尔值
for each (var wall in WallsList)
{
trace(wall.name)
if (wall.hitTestPoint(Character.x - hitRad+.995, Character.y, true)) //col right
{
Character.x+=CharacterSpeed;
}
if (wall.hitTestPoint(Character.x + hitRad-.995, Character.y, true)) //col left
{
Character.x-=CharacterSpeed;
}
if (wall.hitTestPoint(Character.x , Character.y- hitRad+25, true)) //col bottom
{
Character.y+=CharacterSpeed;
}
if (wall.hitTestPoint(Character.x, Character.y+hitRad-25, true)) //col top
{
Character.y -= CharacterSpeed;
}
if (wall.hitTestPoint(Character.x, Character.y+hitRad, true)) // col top #2
{
trace(wall.name) // prints for both walls
Top = true; // only changes for 1 wall
}
if (!wall.hitTestPoint(Character.x, Character.y+hitRad, true))
{
Top = false;
}
}
答案 0 :(得分:0)
将墙壁物体放在球的上方:
setChildIndex(wallObject, this.numChildren - 1);