diff options
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Props.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Scene.meta | 8 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript.cs | 17 | ||||
-rw-r--r-- | Assets/Scripts/Test/ArmorSoldierScript_States.cs | 23 | ||||
-rw-r--r-- | Assets/Scripts/Test/SaionjiScript_States.cs | 10 |
5 files changed, 47 insertions, 19 deletions
diff --git a/Assets/Scripts/Props.meta b/Assets/Scripts/Props.meta new file mode 100644 index 00000000..bb96602e --- /dev/null +++ b/Assets/Scripts/Props.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f299520ed9fcf4a45858ad4ef5a8d5d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scene.meta b/Assets/Scripts/Scene.meta new file mode 100644 index 00000000..eb7a8716 --- /dev/null +++ b/Assets/Scripts/Scene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eaee2d0f48cff9b40baf0686a8105600 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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>(); - - // animator.deltaPosition和animator.deltaRotation是animator做的root motion后的结果 - // 在后面做一个硬性约束z=0,将角色限制在z=0平面上 - if (animator) + Animator animator = GetComponent<Animator>();
+
+ 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); |