17動畫系統(tǒng)(Mecanim)之IK(反向動力學)動畫

效果展示

IK(inverse kinematics)反向動力學動畫##

一般我們都是通過父節(jié)點來調(diào)動子節(jié)點運動,而在實際開發(fā)過程中,有時候我們需要子節(jié)點帶動父節(jié)點進行相應的動作。這種情況就是反向動力學。其實在國內(nèi)的游戲中很少看見IK動畫,一般而言國外的游戲較多。例如刺客信條,手部帶動身體的爬行。通俗講:使用場景中的各種物體來控制和影響角色身體部位的運動

IK的作用##

一般來說,我們在特定的場景下,需要我們的游戲?qū)ο笠黄鹂聪蚰骋粋€游戲環(huán)境或者游戲其他對象。而這個時候,反向運動學就可以讓我們很好的做到這種效果。

IK的實例簡介##

首先把我們滿足IK動畫的條件設置.

設置IK動畫
給動畫設置事件
動畫事件對應的方法展示

模型任務看向膠囊的腳本展示##

代碼控制
public class TargetSee : MonoBehaviour {

    public Animator animator1;//獲取動畫組件
    public Transform target;//看向目標
    public Transform instantiatePosition;//實例化小球的位置
    public GameObject one;//預制物,用來實例化小球
    int speed = 2;

  // public Transform aim;
   // Quaternion quaternion;


    void Start () {
        //quaternion = Quaternion.Euler(aim.position);
    }
    
    // Update is called once per frame
    void Update () {
       
    }

    public void Thow()//動畫的Event事件,必須公開不然找不到實例物體
    {
      GameObject go=GameObject.Instantiate(one, instantiatePosition.position, Quaternion.identity)as GameObject;
        //go.AddComponent<Rigidbody>().velocity = target.transform.position - go.transform.position;
        go.AddComponent<Rigidbody>().AddForce((target.transform.position - go.transform.position)*speed, ForceMode.Impulse);
        //go.transform.Translate(Vector3.forward);
        Destroy(go, 2f);
    }




    private void OnAnimatorIK(int layerIndex)//ik動畫的設置
    {
        animator1.SetLookAtWeight(1, 1, 1, 1, 1);//設置看向動畫的層
        if (target)
        {
            animator1.SetLookAtPosition(target.position);//設置看的目標
        }
        //設置右腳的ik
        //animator1.SetIKPositionWeight(AvatarIKGoal.RightFoot,1);
        //animator1.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1);
        //if (aim != null)
        //{
        //    animator1.SetIKRotation(AvatarIKGoal.RightFoot, quaternion);
        //    animator1.SetIKRotation(AvatarIKGoal.RightFoot,quaternion);
        //}
    }
}

總結(jié)##

1.明確IK(反向動力學動畫)的用法,SetLookAtWeight()與SetLookAtPosition()的兩個重要方法的熟記.
2.動畫事件的添加及其實現(xiàn)特定功能.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容