using System.Collections; using System.Collections.Generic; using UnityEngine; using XRTool.Util; namespace ShadowStudio.Model { /// /// 用户角色控制器 /// public class PlayerAnimatorController : MonoBehaviour { private Animator playerAni; public Transform playerHead; private Transform t_renMAN; private Transform leftHand; private Transform rightHand; private Transform handLeft; private Transform handRight; private Animator leftHandAnim; private Animator rightHandAnim; private int leftState; private int rightState; public void SetHands(Transform leftHand, Transform rightHand) { this.leftHand = leftHand; this.rightHand = rightHand; } private void Start() { if (HandLeft) { HandLeft.gameObject.SetActive(false); } if (HandRight) { HandRight.gameObject.SetActive(false); } if(CScript.App.AppManager.Instance.isRunHolographic) { HandLeft.gameObject.SetActive(false); HandRight.gameObject.SetActive(false); T_renMAN.gameObject.SetActive(false); } } public Animator PlayerAni { get { if (!playerAni) { playerAni = GetComponent(); } return playerAni; } } public Transform T_renMAN { get { if (!t_renMAN) { t_renMAN = UnityUtil.GetBreadthChild(transform, "T_renMAN"); } return T_renMAN; } } public Transform HandLeft { get { if (!handLeft) { handLeft = UnityUtil.GetBreadthChild(transform, "HandLeft"); } return handLeft; } } public Transform HandRight { get { if (!handRight) { handRight = UnityUtil.GetBreadthChild(transform, "HandRight"); } return handRight; } } public Animator LeftHandAnim { get { if (!leftHandAnim && HandLeft) { leftHandAnim = HandLeft.GetComponent(); } return leftHandAnim; } } public Animator RightHandAnim { get { if (!rightHandAnim && HandRight) { rightHandAnim = HandRight.GetComponent(); } return rightHandAnim; } } /// /// 角色IK动画设置 /// /// //private void OnAnimatorIK(int layerIndex) //{ // if (PlayerAni) // { // if (leftHand) // { // SetPlayerIKWeight(AvatarIKGoal.LeftHand); // SetPlayerIK(AvatarIKGoal.LeftHand, leftHand); // } // if (rightHand) // { // SetPlayerIKWeight(AvatarIKGoal.RightHand); // SetPlayerIK(AvatarIKGoal.RightHand, rightHand); // } // } //} public void SetPlayerIK(AvatarIKGoal goal, Vector3 pos, Quaternion rotation) { PlayerAni.SetIKPosition(goal, pos); PlayerAni.SetIKRotation(goal, rotation); } public void SetPlayerIK(AvatarIKGoal goal, Transform target) { SetPlayerIK(goal, target.position, target.rotation); } /// /// 设置头部信息 /// /// public void SetPlayerIKWeight(AvatarIKGoal goal) { PlayerAni.SetIKPositionWeight(goal, 1f); PlayerAni.SetIKRotationWeight(goal, 1f); } public void SetAnimInt(Animator animator, string stateName, int state) { if (animator) { animator.SetInteger(stateName, state); } } public int LeftHandState { get { return leftState; } set { if (LeftHandAnim) { SetAnimInt(LeftHandAnim, "State", leftState = value); } } } public int RightHandState { get { return rightState; } set { if (RightHandAnim) { SetAnimInt(RightHandAnim, "State", rightState = value); } } } } }