AS3 HitTestPoint 停止使用 Array 对象

AS3 HitTestPoint stops working with Array object

玩家在几帧后掉落地面 DisplayObject。我怎样才能阻止他这样做?

在我的游戏主循环中 ENTER_FRAME 每帧都会调用此函数。

public function groundCollision() {
        for each(var moveG: DisplayObject in groundMoveArray) {
            if (moveG.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true)) {
                Bumping = true;
            } else {
                Bumping = false;
            }
        }
        if (Bumping == true) {
            if (ySpeed >= 0) {
                ySpeed = 0;
            }
            if (JumpPressed) {
                ySpeed = jumpConstant;
            }
        } else {
            ySpeed += gravityConstant;
        }
        ySpeed *= friction;
        playerY += ySpeed;
        player.y = playerY;
    }
for each(var moveG: DisplayObject in groundMoveArray) {
    if (moveG.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true)) {
        Bumping = true;
    } else {
        Bumping = false;
    }
}

在这里,您将循环检查玩家是否与所有地面块相对。玩家一次只能与一个方块相交。因此,如果它与一个块相交,则不会与另一个块相交。但是当你在一个循环中进行检查时,你的 Bumping 标志将被分配一个来自最后一个检查块的结果。因此,如果有两个方块,并且玩家与第一个方块相交,您的检查将以 Bumping == false 结束,因为最后检查的方块不是与玩家相交的方块。所以玩家会摔倒。

退出循环需要在Bumping = true后添加break语句