public void MoveTo(GameObject TargetObj, ActionCallBack.MoveFinishCallBack CallBack = null, bool bUseOffset = true, bool bPlayAnim = true, float speed = MOVETOTAGETTIME, int iVal = 0, bool lookTarget = true) { if (null == TargetObj) { return; } MoveTo(TargetObj.transform.position, CallBack, bUseOffset, bPlayAnim, MOVETOTAGETTIME, iVal, lookTarget); }
public void MoveTo(Vector3 TargetPos, ActionCallBack.MoveFinishCallBack CallBack = null, bool bUseOffset = true, bool bPlayAnim = true, float moveTime = MOVETOTAGETTIME, int iVal = 0, bool lookTarget = true) { // one position to another is 0.5f float distance = Vector3.Distance(TargetPos, ActorObj.transform.position); if (distance < GlobalValue.MoveMinGap || Mathf.Approximately(distance, GlobalValue.MoveMinGap)) { if (CallBack != null) { CallBack(iVal); } return; } if (bPlayAnim) { SetAnimationParam(GlobalValue.FMove, AnimatorParamType.APT_Float, distance); } // PlayEntityAction( GlobalValue.ActionName , GlobalValue.Action_Run); ActionCallBack callback = ActorObj.GetComponent <ActionCallBack>(); callback.m_MoveFinishCallBack = CallBack; Hashtable args = new Hashtable(); args.Add("easeType", iTween.EaseType.linear); args.Add("time", moveTime); args.Add("delay", 0.0f); if (lookTarget) { args.Add("looktarget", TargetPos); m_EntityObj.transform.LookAt(TargetPos); } args.Add("loopType", "none"); //args.Add("onstart", "MoveStartCallBack"); //args.Add("onstarttarget", m_EntityObj); args.Add("oncomplete", "ActionMoveFinishCallBack"); args.Add("oncompleteparams", iVal); args.Add("oncompletetarget", m_EntityObj); args.Add("onupdate", "MoveUpdateCallBack"); //args.Add("onupdatetarget", m_EntityObj); args.Add("onupdateparams", true); if (bUseOffset) { Vector3 shortPos = (TargetPos - m_EntityObj.transform.position).normalized; args.Add("position", TargetPos - shortPos * 0.5f); } else { args.Add("position", TargetPos); } iTween.MoveTo(m_EntityObj, args); }