using BITKit.Entities; using BITKit.StateMachine; using Net.Project.B.WorldNode; using Unity.Mathematics; namespace Project.B.CharacterController { /// /// 角色状态 /// public interface ICharacterState : IState { public void UpdateVelocity(ref float3 currentVelocity, float deltaTime); public void UpdateRotation(ref float3 localPosition, ref quaternion currentRotation, ref quaternion viewRotation, float deltaTime); public void BeforeUpdateVelocity(float deltaTime); public void AfterUpdateVelocity(float deltaTime); } /// /// 角色状态数据 /// public interface ICharacterStateData { public float BaseHeight { get; } public float BaseSpeed { get; } public float2 ViewOffset { get; } } /// /// 空状态 /// public interface ICharacterStateEmpty:ICharacterState{} public interface ICharacterStateAnimation : ICharacterState { public bool AllowCollision { get; set; } } /// /// 静止 /// public interface ICharacterStateIdle:ICharacterState{} /// /// 行走 /// public interface ICharacterStateWalk:ICharacterState{} /// /// 蹲下 /// public interface ICharacterStateCrouched:ICharacterState{} /// /// 奔跑 /// public interface ICharacterStateRun:ICharacterState{} /// /// 战术跑 /// public interface ICharacterSprint:ICharacterState{} /// /// 在空中,包括跳跃、下落、飞行等 /// public interface ICharacterStateInAir:ICharacterState{} /// /// 爬上低障碍物 /// public interface ICharacterStateStepUp:ICharacterState{} /// /// 翻阅障碍物 /// public interface ICharacterStateVault:ICharacterState{} /// /// 攀爬 /// public interface ICharacterStateClimb:ICharacterState{} /// /// 被击倒 /// public interface ICharacterKnocked:ICharacterState{} /// /// 滑铲 /// public interface ICharacterSliding:ICharacterState{} /// /// 游泳 /// public interface ICharacterSwimming:ICharacterState{} /// /// 坐下 /// public interface ICharacterSeating : ICharacterState { public UnitySeatNode SeatNode { get; set; } public IEntity SeatEntity { get; set; } } /// /// 爬梯子 /// public interface ICharacterLadder : ICharacterState { public float3 UpPoint { get; set; } public float3 DownPoint { get; set; } } /// /// 降落伞 /// public interface ICharacterParachute:ICharacterState{ } /// /// 自由落体 /// public interface ICharacterFreeFall : ICharacterState { } /// /// 初始化 /// public interface ICharacterInitialize : ICharacterState { } }