From 6a9c951e2ccbf768c87ed4226565a7117c8e2747 Mon Sep 17 00:00:00 2001 From: chai Date: Mon, 16 Nov 2020 14:36:17 +0800 Subject: *misc --- Assets/Scripts/Test/ArmorSoldierScript.cs | 17 ++++++++++++----- Assets/Scripts/Test/ArmorSoldierScript_States.cs | 23 ++++++++++++++--------- Assets/Scripts/Test/SaionjiScript_States.cs | 10 +++++----- 3 files changed, 31 insertions(+), 19 deletions(-) (limited to 'Assets/Scripts/Test') diff --git a/Assets/Scripts/Test/ArmorSoldierScript.cs b/Assets/Scripts/Test/ArmorSoldierScript.cs index dd4cd3e3..c86ca009 100644 --- a/Assets/Scripts/Test/ArmorSoldierScript.cs +++ b/Assets/Scripts/Test/ArmorSoldierScript.cs @@ -21,11 +21,18 @@ public partial class ArmorSoldierScript : Avatar, IInteractable private void OnAnimatorMove() { - Animator animator = GetComponent(); - - // animator.deltaPosition和animator.deltaRotation是animator做的root motion后的结果 - // 在后面做一个硬性约束z=0,将角色限制在z=0平面上 - if (animator) + Animator animator = GetComponent(); + + AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); + + // animator.deltaPosition和animator.deltaRotation是animator做的root motion后的结果 + // 在后面做一个硬性约束z=0,将角色限制在z=0平面上 + if (stateInfo.IsTag("IgnoreRootMotion")) + { + // ignore root motion + //Debug.Log("ignore root motion "); + } + else { Vector3 position = transform.position; position.x += animator.deltaPosition.x; diff --git a/Assets/Scripts/Test/ArmorSoldierScript_States.cs b/Assets/Scripts/Test/ArmorSoldierScript_States.cs index 67eca581..07a4ce74 100644 --- a/Assets/Scripts/Test/ArmorSoldierScript_States.cs +++ b/Assets/Scripts/Test/ArmorSoldierScript_States.cs @@ -35,15 +35,20 @@ public partial class ArmorSoldierScript : Avatar, IInteractable //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ActionSwitchState switchToIdle = new ActionSwitchState(m_StateSystem, idle); - Trigger trigger = null; - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // state setup - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - // air hurt - ConditionMotionAtEnd airAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_AirHurt); + Trigger trigger = null; + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // state setup + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + // light hurt + ConditionMotionAtEnd lightHurtAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_LightHurt); + trigger = new Trigger(lightHurtAtEnd, switchToIdle); + lightHurt.AddTrigger(trigger); + + // air hurt + ConditionMotionAtEnd airAtEnd = new ConditionMotionAtEnd(m_Animator, Anim_AirHurt); trigger = new Trigger(And(airAtEnd, Not(condInAir)), switchToIdle); airHurt.AddTrigger(trigger); diff --git a/Assets/Scripts/Test/SaionjiScript_States.cs b/Assets/Scripts/Test/SaionjiScript_States.cs index 68d09280..0176b976 100644 --- a/Assets/Scripts/Test/SaionjiScript_States.cs +++ b/Assets/Scripts/Test/SaionjiScript_States.cs @@ -44,10 +44,10 @@ public partial class SaionjiScript : Avatar //招式会绑定一个motion HitDefination hitDef = new HitDefination - { - type = HitType.Air, - hurtAddForce = new Vector3(0, 10000, 0) - }; + { + type = HitType.Air, + hurtAddForce = new Vector3(0, 20000, 0) + }; AttackState attk1 = new AttackState(animator, Anim_LightAttack1, m_Body); attk1.AddHitDefination(hitDef); AttackState attk2 = new AttackState(animator, Anim_LightAttack2, m_Body); @@ -79,7 +79,7 @@ public partial class SaionjiScript : Avatar hitDef = new HitDefination { type = HitType.Air, - hurtAddForce = new Vector3(0,5000,0) + hurtAddForce = new Vector3(0,10000,0) }; airAttk1.AddHitDefination(hitDef); -- cgit v1.1-26-g67d0