From fc6de82e75310b4c007d80753a5f58e6692f4855 Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 13 Oct 2020 10:33:05 +0800 Subject: +misc --- Assets/Scripts/Test/FootIKTest.cs | 136 +++++++++++++++++++------------------- 1 file changed, 68 insertions(+), 68 deletions(-) (limited to 'Assets/Scripts/Test/FootIKTest.cs') 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(); - - } - - 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(); + + } + + 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 -- cgit v1.1-26-g67d0