From 694c67043a8851d4d1b39421e1ff52b6fc6c3664 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 13 Sep 2021 12:20:30 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9action=20tool=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=9A=84=E6=A0=B9=E8=8A=82=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/ActionTool/Editor/ActionManager.cs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'Assets/ActionTool/Editor/ActionManager.cs') diff --git a/Assets/ActionTool/Editor/ActionManager.cs b/Assets/ActionTool/Editor/ActionManager.cs index 54322cd6..cb0d5d71 100644 --- a/Assets/ActionTool/Editor/ActionManager.cs +++ b/Assets/ActionTool/Editor/ActionManager.cs @@ -59,6 +59,7 @@ namespace ActionTool private static GameObject s_CurrentUnit; private static string s_CurrentAnimationName; public static GameObject unitInstance { get { return s_UnitInstance; } } + public static GameObject unitRoot { get; private set; } private static GameObject s_UnitInstance; private static Animator s_Animator; private static AnimatorOverrideController s_OverrideContorller; @@ -67,8 +68,7 @@ namespace ActionTool public static ActionData actionData { get { return s_CurActionData; } } public static Vector3 s_InitPosition = Vector3.zero; - - public static Quaternion s_InitRotation = Quaternion.Euler(0,90,0); + public static Quaternion s_InitRotation = Quaternion.identity; private static RootMotionData s_RootMotion; @@ -119,6 +119,7 @@ namespace ActionTool private static GameObject s_RootActionTool; private const string kRootActionTool = "RootActionTool"; + private const string kUnitRoot = "UnitRoot"; private static AnimationEventBase copiedAnimationEvent; @@ -236,14 +237,23 @@ namespace ActionTool if (unit == null) return; - unit.transform.position = s_InitPosition; - unit.transform.rotation = s_InitRotation; + unit.transform.position = Vector3.zero; + unit.transform.rotation = Quaternion.Euler(0, 90, 0); + + var tempUnitRoot = GameObject.Find(kUnitRoot); + if (tempUnitRoot) + GameObject.DestroyImmediate(tempUnitRoot); + unitRoot = new GameObject(kUnitRoot); + unitRoot.transform.localScale = Vector3.one; + unitRoot.transform.rotation = s_InitRotation; + unitRoot.transform.position = s_InitPosition; + unit.transform.SetParent(unitRoot.transform); s_RootActionTool = GameObject.Find(kRootActionTool); if(s_RootActionTool == null) s_RootActionTool = new GameObject(kRootActionTool); - unit.transform.SetParent(s_RootActionTool.transform); + unitRoot.transform.SetParent(s_RootActionTool.transform); s_Animator = unit.GetComponentInChildren(); if(s_Animator == null) @@ -265,7 +275,7 @@ namespace ActionTool s_Animator.applyRootMotion = false; - s_Gizmos = unit.AddComponent(); + s_Gizmos = s_RootActionTool.AddComponent(); Settings = AssetDatabase.LoadAssetAtPath(s_SettingPath); } @@ -526,5 +536,12 @@ namespace ActionTool { copiedAnimationEvent = UnityEngine.Object.Instantiate(animEvent); } + + public static void ResetUnitRootPosAndRot() + { + unitRoot.transform.position = s_InitPosition; + unitRoot.transform.rotation = s_InitRotation; + } + } } \ No newline at end of file -- cgit v1.1-26-g67d0