summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-09-11 13:39:52 +0800
committerchai <chaifix@163.com>2021-09-11 13:39:52 +0800
commit5575843d450870db566b9c275584536299ef40bf (patch)
treec60483e1220ea383693d3accd85fea9fa882cd26 /Assets/Scripts
parent6d1a959a63407c38de4be2870bd0cf46a6d789c5 (diff)
*afterimage
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs37
-rw-r--r--Assets/Scripts/Unit/Controller/UnitController.cs6
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy.cs18
-rw-r--r--Assets/Scripts/Unit/UnitParts.cs12
4 files changed, 66 insertions, 7 deletions
diff --git a/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs b/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
index ce34cb61..ec04f3be 100644
--- a/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
+++ b/Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs
@@ -2,19 +2,48 @@
using System.Collections.Generic;
using UnityEngine;
+// 单个残影的参数
+public struct AfterImageAvatarInfo
+{
+
+}
+
public class AfterImageAvatar : MonoBehaviour
{
#region inspector
-
public Renderer[] renderers;
- public Animator animator;
+ public Animator animator;
+ #endregion
- #endregion
+ float m_CurTime;
+
+ float m_LifeTime;
+
+ public void Initialize(AfterImageAvatarInfo info)
+ {
+
+ }
- public void Initialized()
+ public void Initialize(UnitController prototype)
{
+ transform.position = prototype.transform.position;
+
+ animator.runtimeAnimatorController = prototype.unitAnimation.animator.runtimeAnimatorController;
+ animator.Play(prototype.unitAnimation.baseLayer.stateHash, 0, prototype.unitAnimation.baseLayer.playbackNormalizedTime);
+ animator.speed = 0.02f;
+ animator.Update(1 / 60f);
+
+ m_LifeTime = 0.2f;
+ }
+ public void Update()
+ {
+ m_CurTime += Time.deltaTime;
+ if (m_CurTime > m_LifeTime)
+ {
+ GameObject.Destroy(this.gameObject);
+ }
}
}
diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs
index bbcdc745..384299de 100644
--- a/Assets/Scripts/Unit/Controller/UnitController.cs
+++ b/Assets/Scripts/Unit/Controller/UnitController.cs
@@ -39,6 +39,8 @@ public class UnitController : MonoBehaviour/*, Interactable*/
public UnitCollider unitCollider;
+ public UnitParts unitParts;
+
public GameObject unitObj; // 角色模型
#region 事件监听
@@ -118,7 +120,9 @@ public class UnitController : MonoBehaviour/*, Interactable*/
unitCollider = gameObject.GetOrAddComponent<UnitCollider>();
unitCollider.Initialize();
- }
+
+ unitParts = gameObject.GetComponentInChildren<UnitParts>();
+ }
public virtual void Update()
{
diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs
index 10dae57d..daa840ad 100644
--- a/Assets/Scripts/Unit/TimelineEventProxy.cs
+++ b/Assets/Scripts/Unit/TimelineEventProxy.cs
@@ -247,10 +247,26 @@ public partial class TimelineEventProxy
void EventMesh_AfterImage(AnimationEventBase animEvent)
{
+#if UNITY_EDITOR
+ if (isInEditMode)
+ return;
+#endif
EventMesh_AfterImage afterImage = animEvent as EventMesh_AfterImage;
if (afterImage == null)
return ;
-
+ string avatarPath = owner.unitParts.afterImageAvatarPath;
+ GameObject go = ResourceManager.Instance.LoadAsset<GameObject>(avatarPath);
+ if(go)
+ {
+ GameObject instance = GameObject.Instantiate(go);
+ AfterImageAvatar avatar = instance.GetOrAddComponent<AfterImageAvatar>();
+ if(!avatar)
+ {
+ GameObject.DestroyImmediate(instance);
+ return;
+ }
+ avatar.Initialize(owner);
+ }
}
#endregion
diff --git a/Assets/Scripts/Unit/UnitParts.cs b/Assets/Scripts/Unit/UnitParts.cs
index a7af9c50..88c9cb23 100644
--- a/Assets/Scripts/Unit/UnitParts.cs
+++ b/Assets/Scripts/Unit/UnitParts.cs
@@ -2,11 +2,21 @@
using System.Collections.Generic;
using UnityEngine;
-
// 部件
[DisallowMultipleComponent]
public class UnitParts : MonoBehaviour
{
+ public enum EUnitPart
+ {
+ Sword = 1,
+ Gun = 2,
+ LHand = 3,
+ RHand = 4,
+ }
+
+ [Tooltip("残影用的prefab")]
+ public string afterImageAvatarPath;
+
}