diff options
-rw-r--r-- | Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot.prefab | 14 | ||||
-rw-r--r-- | Assets/Bundle/Unit/PC/Erika/Prefabs/Erika_Robot_AfterImage.prefab | 2 | ||||
-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 |
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;
+
}
|