Fixing is endless

This commit is contained in:
ThomasCharester committed 2026-11-11 01:11:41 +03:00
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;
}
}