summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Test/FootIKTest.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2020-10-13 10:33:05 +0800
committerchai <chaifix@163.com>2020-10-13 10:33:05 +0800
commitfc6de82e75310b4c007d80753a5f58e6692f4855 (patch)
treee6d8d9226595a6727d43f18a218f53533101a4e0 /Assets/Scripts/Test/FootIKTest.cs
parent8cd16fb71177bb61a9475284d944bc6aba30740e (diff)
+misc
Diffstat (limited to 'Assets/Scripts/Test/FootIKTest.cs')
-rw-r--r--Assets/Scripts/Test/FootIKTest.cs136
1 files changed, 68 insertions, 68 deletions
diff --git a/Assets/Scripts/Test/FootIKTest.cs b/Assets/Scripts/Test/FootIKTest.cs
index f1711ade..5b939619 100644
--- a/Assets/Scripts/Test/FootIKTest.cs
+++ b/Assets/Scripts/Test/FootIKTest.cs
@@ -1,69 +1,69 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-public class FootIKTest : MonoBehaviour
-{
-
- Animator anim;
-
- public LayerMask layerMask;
-
- [Range(0, 1f)]
- public float DistanceToGround;
-
- private void Start()
- {
-
- anim = GetComponent<Animator>();
-
- }
-
- private void OnAnimatorIK(int layerIndex)
- {
-
- if (anim)
- {
-
- anim.SetIKPositionWeight(AvatarIKGoal.LeftFoot, anim.GetFloat("IKLeftFootWeight"));
- anim.SetIKRotationWeight(AvatarIKGoal.LeftFoot, anim.GetFloat("IKLeftFootWeight"));
- anim.SetIKPositionWeight(AvatarIKGoal.RightFoot, anim.GetFloat("IKRightFootWeight"));
- anim.SetIKRotationWeight(AvatarIKGoal.RightFoot, anim.GetFloat("IKRightFootWeight"));
-
- // Left Foot
- RaycastHit hit;
- Ray ray = new Ray(anim.GetIKPosition(AvatarIKGoal.LeftFoot) + Vector3.up, Vector3.down);
- if (Physics.Raycast(ray, out hit, DistanceToGround + 1f, layerMask))
- {
- if (hit.transform.tag == "Walkable")
- {
- Vector3 footOriginForward = anim.GetBoneTransform(HumanBodyBones.LeftFoot).forward;
- Vector3 footPosition = hit.point;
- footPosition.y += DistanceToGround;
- anim.SetIKPosition(AvatarIKGoal.LeftFoot, footPosition);
- anim.SetIKRotation(AvatarIKGoal.LeftFoot, Quaternion.LookRotation(footOriginForward - Vector3.Dot(footOriginForward, hit.normal) *(hit.normal), hit.normal));
- }
- }
-
- // Right Foot
- ray = new Ray(anim.GetIKPosition(AvatarIKGoal.RightFoot) + Vector3.up, Vector3.down);
- if (Physics.Raycast(ray, out hit, DistanceToGround + 1f, layerMask))
- {
-
- if (hit.transform.tag == "Walkable")
- {
- Vector3 footOriginForward = anim.GetBoneTransform(HumanBodyBones.RightFoot).forward;
- Vector3 footPosition = hit.point;
- footPosition.y += DistanceToGround;
- anim.SetIKPosition(AvatarIKGoal.RightFoot, footPosition);
- anim.SetIKRotation(AvatarIKGoal.RightFoot, Quaternion.LookRotation(footOriginForward - Vector3.Dot(footOriginForward, hit.normal) * (hit.normal), hit.normal));
- }
-
- }
-
-
- }
-
- }
-
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class FootIKTest : MonoBehaviour
+{
+
+ Animator anim;
+
+ public LayerMask layerMask;
+
+ [Range(0, 1f)]
+ public float DistanceToGround;
+
+ private void Start()
+ {
+
+ anim = GetComponent<Animator>();
+
+ }
+
+ private void OnAnimatorIK(int layerIndex)
+ {
+
+ if (anim)
+ {
+
+ anim.SetIKPositionWeight(AvatarIKGoal.LeftFoot, anim.GetFloat("IKLeftFootWeight"));
+ anim.SetIKRotationWeight(AvatarIKGoal.LeftFoot, anim.GetFloat("IKLeftFootWeight"));
+ anim.SetIKPositionWeight(AvatarIKGoal.RightFoot, anim.GetFloat("IKRightFootWeight"));
+ anim.SetIKRotationWeight(AvatarIKGoal.RightFoot, anim.GetFloat("IKRightFootWeight"));
+
+ // Left Foot
+ RaycastHit hit;
+ Ray ray = new Ray(anim.GetIKPosition(AvatarIKGoal.LeftFoot) + Vector3.up, Vector3.down);
+ if (Physics.Raycast(ray, out hit, DistanceToGround + 1f, layerMask))
+ {
+ if (hit.transform.tag == "Walkable")
+ {
+ Vector3 footOriginForward = anim.GetBoneTransform(HumanBodyBones.LeftFoot).forward;
+ Vector3 footPosition = hit.point;
+ footPosition.y += DistanceToGround;
+ anim.SetIKPosition(AvatarIKGoal.LeftFoot, footPosition);
+ anim.SetIKRotation(AvatarIKGoal.LeftFoot, Quaternion.LookRotation(footOriginForward - Vector3.Dot(footOriginForward, hit.normal) *(hit.normal), hit.normal));
+ }
+ }
+
+ // Right Foot
+ ray = new Ray(anim.GetIKPosition(AvatarIKGoal.RightFoot) + Vector3.up, Vector3.down);
+ if (Physics.Raycast(ray, out hit, DistanceToGround + 1f, layerMask))
+ {
+
+ if (hit.transform.tag == "Walkable")
+ {
+ Vector3 footOriginForward = anim.GetBoneTransform(HumanBodyBones.RightFoot).forward;
+ Vector3 footPosition = hit.point;
+ footPosition.y += DistanceToGround;
+ anim.SetIKPosition(AvatarIKGoal.RightFoot, footPosition);
+ anim.SetIKRotation(AvatarIKGoal.RightFoot, Quaternion.LookRotation(footOriginForward - Vector3.Dot(footOriginForward, hit.normal) * (hit.normal), hit.normal));
+ }
+
+ }
+
+
+ }
+
+ }
+
} \ No newline at end of file