UI调整
This commit is contained in:
@@ -12,18 +12,25 @@ namespace Cielonos.MainGame.Characters
|
||||
{
|
||||
public List<DodgeSource> dodgeSources;
|
||||
public bool canDodge;
|
||||
|
||||
[ShowInInspector]
|
||||
public bool isDodging => dodgeSources.Count > 0;
|
||||
public Timer afterNormalDodgeTimer;
|
||||
public CharacterBase normalDodgedTarget;
|
||||
|
||||
[ShowInInspector]
|
||||
public bool isPerfectDodging => dodgeSources.Any(source => source.hasPerfectDodge && source.isDuringPerfectDodge);
|
||||
|
||||
public float afterPerfectDodgeTimer;
|
||||
public float afterNormalDodgeTimer;
|
||||
public Timer afterPerfectDodgeTimer;
|
||||
public CharacterBase perfectDodgedTarget;
|
||||
|
||||
public DodgeSubmodule(ReactionSubcontroller owner) : base(owner)
|
||||
{
|
||||
dodgeSources = new List<DodgeSource>();
|
||||
canDodge = true;
|
||||
this.afterNormalDodgeTimer = new Timer(1f);
|
||||
this.afterNormalDodgeTimer.onComplete.Add(new PrioritizedAction(() => normalDodgedTarget = null));
|
||||
this.afterPerfectDodgeTimer = new Timer(1f);
|
||||
this.afterPerfectDodgeTimer.onComplete.Add(new PrioritizedAction(() => perfectDodgedTarget = null));
|
||||
}
|
||||
|
||||
public void ApplyDodge(DodgeSource source, bool refreshPerfect = false)
|
||||
@@ -92,8 +99,8 @@ namespace Cielonos.MainGame.Characters
|
||||
dodgeSources.RemoveAll(source => source.dodgeTime <= 0);
|
||||
}
|
||||
|
||||
afterPerfectDodgeTimer -= owner.owner.selfTimeSm.DeltaTime;
|
||||
afterNormalDodgeTimer -= owner.owner.selfTimeSm.DeltaTime;
|
||||
afterPerfectDodgeTimer.Update(owner.owner.selfTimeSm.DeltaTime);
|
||||
afterNormalDodgeTimer.Update(owner.owner.selfTimeSm.DeltaTime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -109,8 +116,10 @@ namespace Cielonos.MainGame.Characters
|
||||
public bool isDuringPerfectDodge;
|
||||
public float perfectTime;
|
||||
public float dodgeTime;
|
||||
|
||||
public string perfectEffectName;
|
||||
public Action onPerfectDodge;
|
||||
|
||||
public string normalEffectName;
|
||||
public Action onNormalDodge;
|
||||
|
||||
@@ -144,6 +153,7 @@ namespace Cielonos.MainGame.Characters
|
||||
this.perfectTime = perfectTime;
|
||||
this.hasPerfectDodge = true;
|
||||
this.isDuringPerfectDodge = true;
|
||||
|
||||
|
||||
this._isTriggered = false;
|
||||
}
|
||||
@@ -164,7 +174,7 @@ namespace Cielonos.MainGame.Characters
|
||||
return defaultDodge;
|
||||
}
|
||||
|
||||
public void PerfectDodge()
|
||||
public void PerfectDodge(AttackAreaBase attackArea)
|
||||
{
|
||||
if(_isTriggered) return;
|
||||
_isTriggered = true;
|
||||
@@ -176,10 +186,13 @@ namespace Cielonos.MainGame.Characters
|
||||
sourceCharacter.feedbackSc.PlayFeedback("PerfectDodge");
|
||||
}
|
||||
|
||||
sourceCharacter.reactionSc.dodgeSm.afterPerfectDodgeTimer = dodgeBufferTime + 0.25f;
|
||||
DodgeSubmodule dodgeSm = sourceCharacter.reactionSc.dodgeSm;
|
||||
dodgeSm.perfectDodgedTarget = attackArea?.creator;
|
||||
dodgeSm.afterPerfectDodgeTimer.Reset(dodgeBufferTime + 0.5f);
|
||||
Debug.Log($"Perfect Dodge triggered by {sourceCharacter.name} against {attackArea?.creator?.name}");
|
||||
}
|
||||
|
||||
public void NormalDodge()
|
||||
public void NormalDodge(AttackAreaBase attackArea)
|
||||
{
|
||||
if(_isTriggered) return;
|
||||
_isTriggered = true;
|
||||
@@ -191,7 +204,9 @@ namespace Cielonos.MainGame.Characters
|
||||
sourceCharacter.feedbackSc.PlayFeedback("NormalDodge");
|
||||
}
|
||||
|
||||
sourceCharacter.reactionSc.dodgeSm.afterNormalDodgeTimer = dodgeBufferTime + 0.25f;
|
||||
DodgeSubmodule dodgeSm = sourceCharacter.reactionSc.dodgeSm;
|
||||
dodgeSm.normalDodgedTarget = attackArea?.creator;
|
||||
dodgeSm.afterNormalDodgeTimer.Reset(dodgeBufferTime + 0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user