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
语句
玩家在几帧后掉落地面 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
语句