애니메이션 레이어에 Base레이어에 톱니바퀴 누르고 IKpass를 체크해두고
스크립트 IKExample을 만든다음 기본캐릭터에 붙여줍니다.
그리고 3dobject로 sphere하나 만든다음 위치 리셋해줍니다.
콜라이더도 삭제하고 크기를 0.2로 한다.
그리고 이렇게 위치 해줍니다.
그리고 구 하위 오브젝트로 빈 오브젝트 하나 만들어주고,
GrabPoint로 만들어 줍니다.
그리고 위치를 Y : 0.5 로 줍니다.
IKExample.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IKExample : MonoBehaviour
{
[SerializeField] private Transform targetTr = null;
[SerializeField] private Transform grabPtTr = null;
[SerializeField, Range(0f, 1f)] private float weight = 1f;
private Animator anim = null;
private void Awake()
{
anim = GetComponent<Animator>();
}
private void OnAnimatorIK(int _layerIndex)
{
anim.SetLookAtWeight(weight);
anim.SetLookAtPosition(targetTr.position);
anim.SetIKPositionWeight(AvatarIKGoal.LeftHand,weight);
anim.SetIKPosition(AvatarIKGoal.LeftHand, grabPtTr.position);
anim.SetIKRotationWeight(AvatarIKGoal.LeftHand, weight);
anim.SetIKPosition(AvatarIKGoal.LeftHand, grabPtTr.position);
}
}
스크립트를 넣어주면
공 위치가 바뀌면 시선과 팔이 따라옵니다.