2014-04-15 106 views
0

玩家不會立即停止,但會進一步進入障礙物10 px(通過它將玩家定位爲+ = 10)。AS3 - HitTest不能正常工作

更新功能

function update(evt:Event) { 
    if(rightMovementAllowed) { 
     player.x += 10; 
    } 
    if(lefttMovementAllowed) { 
     player.x -= 10; 
    } 
} 

檢查碰撞功能

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

回答

0

當玩家與物體相撞,送到他們以前的位置,即位置,他們在之前立即影響。
或者,通過獲取玩家和碰撞物體的尺寸(寬度和高度),您可以將玩家置於一個位置,以便只碰碰撞物體。例如,在確定衝突已經發生,你可以添加以下功能,以您的播放器類:

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)); 
    } 
} 

此功能假定您的播放器和collisionObject影片剪輯,在其中心定位爲它們的參考點。 _oldX和_oldY也是私人播放器變量,用於跟蹤其以前的位置。
請注意,如果觸發每一幀,此功能將表現異常。只有在發生碰撞時才應該調用它。