Actionscript 3 AS3-HitTest无法正常工作

Actionscript 3 AS3-HitTest无法正常工作,actionscript-3,Actionscript 3,玩家不会立即停止,而是以10像素的速度(我将玩家定位为+=10)稍微深入障碍物 更新功能 function update(evt:Event) { if(rightMovementAllowed) { player.x += 10; } if(lefttMovementAllowed) { player.x -= 10; } } 检查碰撞功能 function checkCollision() { if(player.hi

玩家不会立即停止,而是以10像素的速度(我将玩家定位为+=10)稍微深入障碍物

更新功能

function update(evt:Event) {
    if(rightMovementAllowed) {
        player.x += 10;
    }
    if(lefttMovementAllowed) {
        player.x -= 10;
    }
}
检查碰撞功能

function checkCollision() {
    if(player.hitTestObject(enemy)) {
        rightMovementAllowed = false;
        leftMovementAllowed = false;
    }
}

当玩家与物体发生碰撞时,将其发送到其先前的位置(即碰撞前的位置)。
或者,通过获取播放器和碰撞对象的尺寸(宽度和高度),可以将播放器放置在某个位置,使其仅接触碰撞对象。例如,确定发生了碰撞后,您可以向Player类添加以下函数:

function collision(collisionObject:MovieClip) {
    if (x>_oldX) {
        x = collisionObject.x - ((this.width * 0.5) + (collisionObject.width * 0.5));
    } else {
        x = collisionObject.x + ((this.width * 0.5) + (collisionObject.width * 0.5));
    }
    if (y>_oldY) {
        y = collisionObject.y - ((this.height * 0.5) + (collisionObject.height * 0.5));
    } else {
        y = collisionObject.y + ((this.height * 0.5) + (collisionObject.height * 0.5));
    }
}
此函数假定您的播放器和碰撞对象MovieClips的参考点位于其中心。另外_oldX和_oldY是私人玩家变量,用于跟踪其以前的位置。
请注意,如果每帧触发一次,此功能将异常运行。仅当碰撞刚刚发生时才应调用它