summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab14
-rw-r--r--Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab2
-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
6 files changed, 81 insertions, 8 deletions
diff --git a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab
index 48d2cff5..73baeb6d 100644
--- a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab
+++ b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab
@@ -592,6 +592,7 @@ GameObject:
m_Component:
- component: {fileID: 6930345995811640846}
- component: {fileID: 7023111129766813114}
+ - component: {fileID: 1704775273}
m_Layer: 0
m_Name: Erika_Robot
m_TagString: Untagged
@@ -635,6 +636,19 @@ Animator:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!114 &1704775273
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6928033330946439154}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 19d4fad3ce933bf45a32ff4d0d7e328a, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ afterImageAvatarPath: Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab
--- !u!1 &6928056367075676882
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab
index 0c9b4f45..508a3826 100644
--- a/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab
+++ b/Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab
@@ -433,7 +433,7 @@ Transform:
m_GameObject: {fileID: 6928033330946439154}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.54, y: 3.34, z: -12.52}
- m_LocalScale: {x: 1, y: 1, z: 1}
+ m_LocalScale: {x: 0.7, y: 0.7, z: 0.7}
m_Children:
- {fileID: 6930312115733728132}
- {fileID: 6930221487356679114}
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;
+
}