|
|
@@ -23,8 +23,6 @@ public class AttributeStatus : MonoBehaviour
|
|
|
private HitFeedbackSystem hitFeedbackSystem;
|
|
|
|
|
|
//behit参数
|
|
|
- [DisplayOnly] public bool canChangeHitStun;
|
|
|
- [DisplayOnly] public bool haveSpecialStates;
|
|
|
[DisplayOnly] public SpecialState curSpecialStates = SpecialState.Null;
|
|
|
|
|
|
[LabelText("控制时间")] [DisplayOnly] public float attributeTime;
|
|
|
@@ -96,44 +94,99 @@ public class AttributeStatus : MonoBehaviour
|
|
|
|
|
|
public void AddSpecialState(AttackInfo attackInfo, Character attackFrom)
|
|
|
{
|
|
|
- if (canChangeHitStun)
|
|
|
+ if (attackInfo.attackEffect != null && attackInfo.attackEffect.Length > 0)
|
|
|
{
|
|
|
- canChangeHitStun = false;
|
|
|
- hitFeedbackSystem.EnterHitStun(attackFrom);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (haveSpecialStates)
|
|
|
- {
|
|
|
- haveSpecialStates = false;
|
|
|
- hitFeedbackSystem.canHitStun = false;
|
|
|
- switch (curSpecialStates)
|
|
|
+ AttackEffect attackEffect = AttackEffect.Null;
|
|
|
+ foreach (AttackEffect ae in attackInfo.attackEffect)
|
|
|
{
|
|
|
- case SpecialState.FloatState:
|
|
|
- AddFloat(attackInfo.floatState);
|
|
|
- break;
|
|
|
- case SpecialState.BlownUp:
|
|
|
- if (rb.useGravity)
|
|
|
- {
|
|
|
+ switch (attackInfo.attackEffect[0])
|
|
|
+ {
|
|
|
+ /*控制*/
|
|
|
+ //漂浮
|
|
|
+ case AttackEffect.FloatState:
|
|
|
+ if (resistances.Float == 1)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (PriorityOrder(SpecialState.FloatState))
|
|
|
+ {
|
|
|
+ attackEffect = AttackEffect.FloatState;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //击飞
|
|
|
+ case AttackEffect.BlowUp:
|
|
|
+ if (resistances.BlowUp == 1)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (rb.useGravity)
|
|
|
+ {
|
|
|
+ if (PriorityOrder(SpecialState.BlownUp))
|
|
|
+ {
|
|
|
+ attackEffect = AttackEffect.BlowUp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //击落
|
|
|
+ case AttackEffect.ShotDown:
|
|
|
+ if (resistances.ShotDown == 1)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (!rb.useGravity)
|
|
|
+ {
|
|
|
+ if (PriorityOrder(SpecialState.ShotDown))
|
|
|
+ {
|
|
|
+ attackEffect = AttackEffect.ShotDown;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ //击晕
|
|
|
+ case AttackEffect.Weak:
|
|
|
+ if (resistances.Weak == 1)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (PriorityOrder(SpecialState.Weak))
|
|
|
+ {
|
|
|
+ attackEffect = AttackEffect.Weak;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ if (attackEffect != AttackEffect.Null)
|
|
|
+ {
|
|
|
+ switch (attackEffect)
|
|
|
+ {
|
|
|
+ /*控制*/
|
|
|
+ //漂浮
|
|
|
+ case AttackEffect.FloatState:
|
|
|
+ AddFloat(attackInfo.floatState);
|
|
|
+ break;
|
|
|
+ //击飞
|
|
|
+ case AttackEffect.BlowUp:
|
|
|
AddBlowUp(attackInfo.blowUp, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
|
|
|
//虾兵特殊攻击先留着
|
|
|
//AddBlowUp(attackInfo.blowUp, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
|
|
|
- }
|
|
|
- break;
|
|
|
- case SpecialState.ShotDown:
|
|
|
- if (!rb.useGravity)
|
|
|
- {
|
|
|
+ break;
|
|
|
+ //击落
|
|
|
+ case AttackEffect.ShotDown:
|
|
|
AddShotDown(attackInfo.shotDown, attackFrom.bodyTrans.localScale.x < 0 ? -1 : 1);
|
|
|
//虾兵特殊攻击先留着
|
|
|
//AddShotDown(attackInfo.shotDown, attackFrom.transform.position.x < character.transform.position.x ? -1 : 1);
|
|
|
- }
|
|
|
- break;
|
|
|
- case SpecialState.Weak:
|
|
|
- AddWeak(attackInfo.weak);
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ //击晕
|
|
|
+ case AttackEffect.Weak:
|
|
|
+ AddWeak(attackInfo.weak);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
|
|
|
+ }
|
|
|
+ hitFeedbackSystem.EnterHitStun(attackFrom);
|
|
|
}
|
|
|
|
|
|
//CharacterState为SpecialStatus时调用此函数
|
|
|
@@ -270,7 +323,6 @@ public class AttributeStatus : MonoBehaviour
|
|
|
if (curSpecialStates == SpecialState.Null)
|
|
|
{
|
|
|
curSpecialStates = specialState;
|
|
|
- haveSpecialStates = true;
|
|
|
return true;
|
|
|
}
|
|
|
else
|
|
|
@@ -278,15 +330,10 @@ public class AttributeStatus : MonoBehaviour
|
|
|
if (curSpecialStates >= specialState)
|
|
|
{
|
|
|
curSpecialStates = specialState;
|
|
|
- haveSpecialStates = true;
|
|
|
return true;
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- canChangeHitStun = true;
|
|
|
- return false;
|
|
|
- }
|
|
|
}
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
//受到漂浮
|