diff options
author | chai <chaifix@163.com> | 2021-09-11 13:39:52 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-09-11 13:39:52 +0800 |
commit | 5575843d450870db566b9c275584536299ef40bf (patch) | |
tree | c60483e1220ea383693d3accd85fea9fa882cd26 /Assets/Scripts | |
parent | 6d1a959a63407c38de4be2870bd0cf46a6d789c5 (diff) |
*afterimage
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Unit/AfterImage/AfterImageAvatar.cs | 37 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Controller/UnitController.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Unit/TimelineEventProxy.cs | 18 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitParts.cs | 12 |
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;
+
}
|