2012-10-31 25 views

回答

1

一個簡單的方法可能是將玩家沿一個軸的位置設置回每個滴答的固定值。既然你想鎖定他到X軸,你需要確保他的棋子不會沿着Y軸移動。

如果您正在使用自定義的PlayerController:

class MyPlayerController extends PlayerController; 

simulated event Tick (float deltaTime) 
{ 
    local vector snappedLocation; 

    Super.Tick(deltaTime); 

    if (Pawn != none) 
    { 
     snappedLocation = Pawn.Location; 
     snappedLocation.Y = 0.0; 
     Pawn.SetLocation(snappedLocation); 
    } 
} 

或者,如果你需要的不僅僅是玩家的棋子鎖定在X軸以上(說你想鎖定於X軸過敵人),你可以實現它在典當的一個或多個子類:

class MyPawn extends Pawn; 

simulated event Tick (float deltaTime) 
{ 
    local vector snappedLocation; 

    Super.Tick(deltaTime); 

    snappedLocation = Location; 
    snappedLocation.Y = 0.0; 
    SetLocation(snappedLocation); 
} 

取決於你試圖然而,做什麼,你可能會遇到問題,這種方法,因爲玩家仍然可以把和他VelocityAcceleration載體可能不嚴格沿着X軸指向。您可以嘗試在PlayerInput事件中延長PlayerInput級別並始終將aTurn設置爲零來禁用車削。一個更強大的解決方案可能是在PlayerController中自己做更多的數學運算,並確保棋子的速度和加速度只沿着X軸指向;請查閱PlayerController中PlayerWalking狀態下的PlayerMove函數,以瞭解PlayerController如何通過更改其加速度來控制Pawn運動的示例。