Fixing is endless
This commit is contained in:
1 parent
c0dec163cd
commit
3ca9444333
45 files changed
+123468
-18592
No files matched your search
@@ -21,19 +21,27 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
|
||||
public override BattleActionType ActionType => BattleActionType.Stugger;
|
||||
public override DeciderType DeciderType => DeciderType.AsIs;
|
||||
|
||||
public override BattleActionData MountAndGetFrames(EntityProperties entity, BattleActionDecisionResult result)
|
||||
{
|
||||
return new StuggerActionData { TotalFrames = _actionParameters.TotalFrames, Finished = false};
|
||||
return new StuggerActionData
|
||||
{
|
||||
TotalFrames = _actionParameters.TotalFrames,
|
||||
TransitionFrames = _actionParameters.TransitionFrames,
|
||||
Finished = false
|
||||
};
|
||||
}
|
||||
|
||||
public override void Finish(EntityProperties entity, BattleActionData actionData, BattleActionDecisionResult result)
|
||||
{
|
||||
|
||||
entity.KinematicCharacterMotor.BaseVelocity = Vector3.zero;
|
||||
entity.MovementController.Freeze = true;
|
||||
}
|
||||
|
||||
public override void Tick(float tickDelta,
|
||||
EntityProperties entity,
|
||||
BattleActionDecisionResult battleActionDecisionResult,
|
||||
public override void Tick(
|
||||
float tickDelta,
|
||||
EntityProperties entity,
|
||||
BattleActionDecisionResult battleActionDecisionResult,
|
||||
BattleActionData battleActionData)
|
||||
{
|
||||
if (battleActionData is not StuggerActionData stuggerActionData)
|
||||
@@ -42,21 +50,45 @@ namespace Code.OfficeGame.BattleMode.Actions
|
||||
battleActionData.Finished = true;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (stuggerActionData.CurrentFrame == 0)
|
||||
{
|
||||
if (stuggerActionData.TotalFrames <= 0)
|
||||
stuggerActionData.TotalFrames = _actionParameters.TotalFrames;
|
||||
|
||||
if (stuggerActionData.TransitionFrames <= 0)
|
||||
stuggerActionData.TransitionFrames = _actionParameters.TransitionFrames;
|
||||
|
||||
var transitionTime = stuggerActionData.TransitionFrames * BattleTimeline.TickDelta;
|
||||
|
||||
|
||||
entity.SyncRootMotionToMotor();
|
||||
|
||||
entity.animator.applyRootMotion = false;
|
||||
entity.animator.CrossFadeInFixedTime(StuggerStateHash, transitionTime);
|
||||
}
|
||||
|
||||
if (stuggerActionData.KnockbackDistance > 0f
|
||||
&& stuggerActionData.KnockbackSpeed > 0f
|
||||
&& stuggerActionData.KnockbackDirection.sqrMagnitude > 0.0001f)
|
||||
{
|
||||
float stepDistance = Mathf.Min(
|
||||
stuggerActionData.KnockbackSpeed * tickDelta,
|
||||
stuggerActionData.KnockbackDistance);
|
||||
|
||||
stuggerActionData.KnockbackDistance -= stepDistance;
|
||||
|
||||
Vector3 step = stuggerActionData.KnockbackDirection * stepDistance;
|
||||
entity.KinematicCharacterMotor.MoveCharacter(
|
||||
entity.KinematicCharacterMotor.TransientPosition + step);
|
||||
}
|
||||
|
||||
stuggerActionData.CurrentFrame++;
|
||||
|
||||
if (stuggerActionData.CurrentFrame >= _actionParameters.TotalFrames)
|
||||
if (stuggerActionData.CurrentFrame >= stuggerActionData.TotalFrames)
|
||||
{
|
||||
Debug.Log("Frame last");
|
||||
entity.SyncRootMotionToMotor();
|
||||
entity.animator.Play(EntryStateHash, 0, 0f);
|
||||
entity.animator.Update(0f);
|
||||
|
||||
battleActionData.Finished = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user