我正在将 sprint 状态写入我的 UDK 游戏中的自定义 pawn 类。我正在查看 Epic 用于管理状态的示例代码,并且大部分游戏逻辑位于 Controller 类而不是 Pawn 类中。这对我来说似乎倒退了。我最初认为控制器只是处理 AI 和玩家输入,现在我不确定在哪里放置我自己的状态代码。
例如,PlayerController.uc 文件有 PlayerWalking、PlayerClimbing 等,但似乎也改变了 Pawn 的状态:
// player is climbing ladder
state PlayerClimbing
{
ignores SeePlayer, HearNoise, Bump;
event NotifyPhysicsVolumeChange( PhysicsVolume NewVolume )
{
if( NewVolume.bWaterVolume )
{
GotoState( Pawn.WaterMovementState );
}
else
{
GotoState( Pawn.LandMovementState );
}
}
...
由于冲刺状态应该否定 PlayerWalking 状态,我应该将冲刺状态代码放在 Controller 类而不是 Pawn 中吗?这个逻辑应该怎么处理?谢谢!