播放器在几帧之后落在地面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;
}
答案 0 :(得分:0)
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
结束,因为检查的最后一个块不是与玩家相交的块。所以玩家会摔倒。
您需要在break
之后添加Bumping = true
语句才能退出循环。