summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Avatar
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-11-06 20:41:04 +0800
committerchai <chaifix@163.com>2020-11-06 20:41:04 +0800
commit79ff94365b572d0e64ba945dcef2641ee508faa7 (patch)
tree063b2f29aa312885725e3ac203f9355d303f754d /Assets/Scripts/Avatar
parent6118fbc482417cdd44f21748fc02b093a3e0ac7b (diff)
*空中攻击
Diffstat (limited to 'Assets/Scripts/Avatar')
-rw-r--r--Assets/Scripts/Avatar/Abilities/AttackAbility.cs5
-rw-r--r--Assets/Scripts/Avatar/Abilities/IdleAbility.cs7
-rw-r--r--Assets/Scripts/Avatar/Abilities/MoveAbility.cs5
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects.meta8
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs18
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs.meta11
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs18
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs.meta11
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs49
-rw-r--r--Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs.meta11
-rw-r--r--Assets/Scripts/Avatar/Avatar.cs5
-rw-r--r--Assets/Scripts/Avatar/Trigger.cs21
12 files changed, 162 insertions, 7 deletions
diff --git a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
index 57e9541b..5a200cf8 100644
--- a/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/AttackAbility.cs
@@ -85,6 +85,11 @@ public class AttackAbility : AbilityBase
{
hit.WipeRecords();
}
+
+ foreach(var trigger in m_Triggers)
+ {
+ trigger.Reset();
+ }
}
public override void OnExit()
diff --git a/Assets/Scripts/Avatar/Abilities/IdleAbility.cs b/Assets/Scripts/Avatar/Abilities/IdleAbility.cs
index d42308db..e692cc2a 100644
--- a/Assets/Scripts/Avatar/Abilities/IdleAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/IdleAbility.cs
@@ -24,7 +24,12 @@ public class IdleAbility : AbilityBase
public override void OnEnter()
{
m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.25f);
- }
+
+ foreach (var trigger in m_Triggers)
+ {
+ trigger.Reset();
+ }
+ }
public override void OnInit()
{
diff --git a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs
index cf9fa106..61efd0cf 100644
--- a/Assets/Scripts/Avatar/Abilities/MoveAbility.cs
+++ b/Assets/Scripts/Avatar/Abilities/MoveAbility.cs
@@ -31,6 +31,11 @@ public class MoveAbility : AbilityBase
public override void OnEnter()
{
m_Animator.CrossFadeInFixedTime(m_AnimHash, 0.1f);
+
+ foreach (var trigger in m_Triggers)
+ {
+ trigger.Reset();
+ }
}
public override void OnExit()
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects.meta b/Assets/Scripts/Avatar/Actions/ActionEffects.meta
new file mode 100644
index 00000000..17a426dd
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0b5ccfefc2e6b104a8566f4da9a16c5f
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs
new file mode 100644
index 00000000..0b2ac361
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionActivateAfterImage : ActionBase
+{
+ private bool m_IsActive;
+
+ public ActionActivateAfterImage(bool isActive)
+ {
+ m_IsActive = isActive;
+ }
+
+ public override void Execute()
+ {
+ AfterImagePool.Instance.Activate(m_IsActive);
+ }
+}
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs.meta b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs.meta
new file mode 100644
index 00000000..189e2f24
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionActivateAfterImage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 8df8331b2b9416b499e856b691c2326e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs
new file mode 100644
index 00000000..1d5c2f8b
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ActionAfterImageInterval : ActionBase
+{
+ private int m_Interval;
+
+ public ActionAfterImageInterval(int interval)
+ {
+ m_Interval = interval;
+ }
+
+ public override void Execute()
+ {
+ AfterImagePool.Instance.SetInterval(m_Interval);
+ }
+}
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs.meta b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs.meta
new file mode 100644
index 00000000..fa144bad
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionAfterImageInterval.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e87b2df9fee7956449df7dc2d430b862
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs
new file mode 100644
index 00000000..6a00aaa8
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs
@@ -0,0 +1,49 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+// 播放特效
+public class ActionPlayEffect : ActionBase
+{
+ enum Type
+ {
+ GivenPosition, // 固定位置
+ FollowObject, // 动态位置
+ Avatar, // 角色
+ }
+
+ Type m_Type;
+
+ string m_Effect;
+ Vector3 m_Position;
+ Vector3 m_Rotation;
+ Vector3 m_Scale;
+ Transform m_Follow;
+ Avatar m_Avatar;
+
+ public ActionPlayEffect(string effect, Vector3 position, Vector3 rotation, Vector3 scale)
+ {
+
+ }
+
+ public ActionPlayEffect(string effect, Transform followPosition, Vector3 rotation, Vector3 scale)
+ {
+
+ }
+
+ public ActionPlayEffect(string effect, Avatar avatar, Vector3 rotation, Vector3 scale)
+ {
+ m_Type = Type.Avatar;
+ m_Effect = effect;
+ m_Avatar = avatar;
+ m_Rotation = rotation;
+ m_Scale = scale;
+ }
+
+ public override void Execute()
+ {
+ if (m_Type == Type.Avatar)
+ m_Position = m_Avatar.GetEffectPosition();
+ EffectsManager.Instance.PlayEffect(m_Effect, m_Position, m_Rotation, m_Scale);
+ }
+}
diff --git a/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs.meta b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs.meta
new file mode 100644
index 00000000..0e085fc4
--- /dev/null
+++ b/Assets/Scripts/Avatar/Actions/ActionEffects/ActionPlayEffect.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ca4c24da837b8854f8510118217e063d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Avatar/Avatar.cs b/Assets/Scripts/Avatar/Avatar.cs
index a8d90fa7..928d2197 100644
--- a/Assets/Scripts/Avatar/Avatar.cs
+++ b/Assets/Scripts/Avatar/Avatar.cs
@@ -131,4 +131,9 @@ public class Avatar : MonoBehaviour, IInteractable
m_AbilitySystem.OnLateUpdate();
}
+ public virtual Vector3 GetEffectPosition()
+ {
+ return Vector3.zero;
+ }
+
}
diff --git a/Assets/Scripts/Avatar/Trigger.cs b/Assets/Scripts/Avatar/Trigger.cs
index 70a6d0f4..a885327c 100644
--- a/Assets/Scripts/Avatar/Trigger.cs
+++ b/Assets/Scripts/Avatar/Trigger.cs
@@ -31,17 +31,23 @@ public sealed class Trigger
}
private ConditionBase m_Condition;
- private List<ActionBase> m_ActionChain = new List<ActionBase>();
-
+ private List<ActionBase> m_ActionChain = new List<ActionBase>();
+
+ private TriggerOnlyOnce m_OnlyOnce;
+
+ private bool m_IsTriggered;
+
public Trigger(ConditionBase condition, List<ActionBase> actions, TriggerOnlyOnce onlyOnce = TriggerOnlyOnce.Off, TriggerSwallow swallow = TriggerSwallow.On)
{
- m_Swallow = swallow;
+ m_OnlyOnce = onlyOnce;
+ m_Swallow = swallow;
m_Condition = condition;
m_ActionChain.AddRange(actions);
}
public Trigger(ConditionBase condition, ActionBase action, TriggerOnlyOnce onlyOnce = TriggerOnlyOnce.Off, TriggerSwallow swallow = TriggerSwallow.On)
{
- m_Swallow = swallow;
+ m_OnlyOnce = onlyOnce;
+ m_Swallow = swallow;
m_Condition = condition;
m_ActionChain.Add(action);
}
@@ -49,8 +55,8 @@ public sealed class Trigger
//重置触发器的参数
public void Reset()
{
-
- }
+ m_IsTriggered = false;
+ }
/// <summary>
/// 如果触发执行了,返回true,否则返回false
@@ -58,12 +64,15 @@ public sealed class Trigger
/// <returns></returns>
public bool Update()
{
+ if (m_IsTriggered && m_OnlyOnce == TriggerOnlyOnce.On)
+ return false;
if (m_Condition.Evaluate())
{
foreach(var action in m_ActionChain)
{
action.Execute();
}
+ m_IsTriggered = true;
return true;
}
return false;