FootIkはほぼ完成したのですがコリジョンをどう設定すればいいかわかりません上から下に押し下げると斜めしたに落ちてしまったり中々重力で地面に押し当てながら地面に立つという動作を実現できませんどうすればいいのでしょか?
プレイヤーにはカプセルコライダーが入っています。
プレイヤーのIKスクリプト
using System.Collections; using System.Collections.Generic; using UnityEngine; public class IK : MonoBehaviour { Animator anim; public Transform leftIKTarget; public Transform rightIKTarget; public Transform hintLeft; public Transform hintRight; Vector3 lFpos; Vector3 rFpos; Quaternion lFrot; Quaternion rFrot; float lFWeight; float rFWeight; Transform leftFoot; Transform rightFoot; public float ikweight; public float offsetY; // Start is called before the first frame update void Start() { anim = GetComponent<Animator>(); leftFoot = anim.GetBoneTransform(HumanBodyBones.LeftFoot); rightFoot = anim.GetBoneTransform(HumanBodyBones.RightFoot); lFrot = leftFoot.rotation; rFrot = rightFoot.rotation; } // Update is called once per frame void Update() { RaycastHit leftHit; RaycastHit rightHit; Vector3 rpos = rightFoot.TransformPoint(Vector3.zero); Vector3 lpos = leftFoot.TransformPoint(Vector3.zero); if(Physics.Raycast(lpos,-Vector3.up,out leftHit,1)) { lFpos = leftHit.point; lFrot = Quaternion.FromToRotation(transform.up,leftHit.normal) * transform.rotation; } if(Physics.Raycast(rpos,-Vector3.up,out rightHit,1)) { rFpos = rightHit.point; rFrot = Quaternion.FromToRotation(transform.up,rightHit.normal) * transform.rotation; } } private void OnAnimatorIK() { lFWeight = anim.GetFloat("LeftFoot"); rFWeight = anim.GetFloat("RightFoot"); anim.SetIKPositionWeight(AvatarIKGoal.LeftFoot,lFWeight); anim.SetIKPositionWeight(AvatarIKGoal.RightFoot,rFWeight); //anim.SetIKPosition(AvatarIKGoal.LeftFoot,lFpos + new Vector3(0,offsetY,0)); //anim.SetIKPosition(AvatarIKGoal.RightFoot,rFpos + new Vector3(0,offsetY,0)); anim.SetIKPosition(AvatarIKGoal.LeftFoot,lFpos); anim.SetIKPosition(AvatarIKGoal.RightFoot,rFpos); anim.SetIKRotationWeight(AvatarIKGoal.LeftFoot,lFWeight); anim.SetIKRotationWeight(AvatarIKGoal.RightFoot,rFWeight); anim.SetIKRotation(AvatarIKGoal.LeftFoot,lFrot); anim.SetIKRotation(AvatarIKGoal.RightFoot,rFrot); } }
あなたの回答
tips
プレビュー