2017-04-27 61 views
0

IK爲什麼Inspector中的ThirdPersonController Animator組件中不存在IK控制器?

我試圖按照統一的文件說明如何使用反向運動學在本頁面:

Inverse Kinematics

但我沒有IK動畫控制器的時候,我選擇動畫師控制器。

我試着現在添加腳本。但是右手被摺疊到另一側。這不像它持有閃光燈:腳本附加到ThirdPersonController。然後我將拖放到Inspector中的腳本右側的HandObj EthanRightHand和lookObj中,拖動了手電筒。

但手似乎是錯誤的方式。

IK Control

這是我現在使用的IKControl腳本:

using UnityEngine; 
using System; 
using System.Collections; 

[RequireComponent(typeof(Animator))] 

public class IKControl : MonoBehaviour 
{ 

    protected Animator animator; 

    public bool ikActive = false; 
    public Transform rightHandObj = null; 
    public Transform lookObj = null; 

    void Start() 
    { 
     animator = GetComponent<Animator>(); 
    } 

    //a callback for calculating IK 
    void OnAnimatorIK() 
    { 
     if (animator) 
     { 

      //if the IK is active, set the position and rotation directly to the goal. 
      if (ikActive) 
      { 

       // Set the look target position, if one has been assigned 
       if (lookObj != null) 
       { 
        animator.SetLookAtWeight(1); 
        animator.SetLookAtPosition(lookObj.position); 
       } 

       // Set the right hand target position and rotation, if one has been assigned 
       if (rightHandObj != null) 
       { 
        animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1); 
        animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1); 
        animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position); 
        animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation); 
       } 

      } 

      //if the IK is not active, set the position and rotation of the hand and head back to the original position 
      else 
      { 
       animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 0); 
       animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 0); 
       animator.SetLookAtWeight(0); 
      } 
     } 
    } 
} 
+1

您是否嘗試將腳本添加到'GameObject'? – Hristo

+0

@Hristo是的,我現在嘗試。但它還不能正常工作,手被摺疊錯誤,看起來不像拿着手電筒。我更新了我的問題以及我正在使用的腳本。 –

+0

當你玩的時候有什麼區別嗎?你是否也從手的「變換」中改變了任何東西? – Hristo

回答

0

添加一個空的遊戲對象的手電筒和目標,而不是手電筒對象本身。點擊播放,然後擺弄空物體的位置,直到它到達你想要的位置。然後,只需將手電筒變爲預製,停止播放模式,並確保場景中的手電筒與預製相匹配(如果需要,您可以使用恢復功能)。

現在它會做你想要的每一次。你甚至可以有多個預製件,其中空物體的位置不同,以允許具有較大或較小的手的人物可靠地保持它。

相關問題