SetIKPositionWeight--OnAnimatorIK 一起使用

using UnityEngine;
using System.Collections;

public class CtrlIK : MonoBehaviour {

 Animator anim;
 public Transform enemy;
 bool lookAtTarget;   

 RaycastHit hitInfo;
 AvatarIKGoal aIKGoal=AvatarIKGoal.LeftHand ; //IK可动的身体部分
 Transform goalTran;

 // Use this for initialization
 void Start () {
  anim=GetComponent<Animator>();//寻找animator脚本
  goalTran =GameObject.Find ("pickupWrench").transform ;
 }
	
 // Update is called once per frame
 void FixedUpdate () {
	
  if(Input.GetKey (KeyCode.G))
  {
   //anim.SetLookAtWeight (0,0,1,0,0.5f);
   anim.SetLookAtWeight (0.5f);
   anim.SetLookAtPosition (enemy.position );
  }
 }

 float weightV=0;
 void OnAnimatorIK()
 {
  Ray myRay=Camera.main.ScreenPointToRay (Input.mousePosition);

  if(Physics.Raycast(myRay,out hitInfo))
  {
   if(hitInfo.transform ==goalTran)
   {
    //anim.SetBool ("Grab",true );
    Debug.Log ("Drag me");
    
    if(Input.GetMouseButton (0))
    {
     goalTran.Translate (goalTran.forward*Time.deltaTime *0.1f );
    }
    
    anim.SetIKPositionWeight (AvatarIKGoal.RightHand ,0.2f);
    anim.SetIKPosition (AvatarIKGoal.RightHand ,goalTran.position );
   }
   
   if(hitInfo.transform.name =="_collision_main_001")
   {
    if(Input.GetMouseButton (0))
    {
     Debug.Log (hitInfo.transform.name );
     anim.SetIKPosition (AvatarIKGoal.RightFoot,hitInfo.point );
     weightV=Mathf.Lerp (weightV,1,Time.deltaTime );
     anim.SetIKPositionWeight (AvatarIKGoal.RightFoot,weightV);
    }
    else 
    {
     anim.SetIKPosition (AvatarIKGoal.RightFoot,hitInfo.point );
     weightV=Mathf.Lerp (weightV,0,Time.deltaTime );
     anim.SetIKPositionWeight (AvatarIKGoal.RightFoot,weightV);
    }
   }
   
  }
 }

 void OnTriggerEnter()
 {
  anim.SetTrigger ("");
 }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值