Beispiel #1
0
 public void Update()
 {
     if (mAgent != null)
     {
         var        npcOBJ       = gameObject;
         var        agent        = mAgent;
         Vector3    direction    = (agent.transform.position - npcOBJ.transform.position).normalized;
         Quaternion lookRotation = Quaternion.LookRotation(direction);
         //Char
         float angleChar = 0;
         if (mRequestLockBack)
         {
             Quaternion i_lookRotation = Quaternion.LookRotation((npcOBJ.transform.position - agent.transform.position).normalized);
             agent.transform.rotation = Quaternion.Slerp(agent.transform.rotation, i_lookRotation, Time.deltaTime * 5);
             angleChar = Quaternion.Angle(agent.transform.rotation, i_lookRotation);
         }
         //NPC
         npcOBJ.transform.rotation = Quaternion.Slerp(npcOBJ.transform.rotation, lookRotation, Time.deltaTime * 5);
         var angleNPC = Quaternion.Angle(npcOBJ.transform.rotation, lookRotation);
         if (angleChar <= 1 && angleNPC <= 1)
         {
             mAgent = null;
             if (mOnFinish != null)
             {
                 var callBack = mOnFinish;
                 mOnFinish = null;
                 callBack(this);
             }
         }
     }
 }
Beispiel #2
0
 public void StopLock()
 {
     // if(mOnFinish != null){
     //  Debug.LogWarning("Can't stop Lock when Waiting");
     //  return;
     // }
     mOnFinish = null;
     mRequest  = false;
 }
Beispiel #3
0
 public void StopLock()
 {
     // if(mOnFinish != null){
     //  Debug.LogWarning("Can't stop Lock when Waiting");
     //  return;
     // }
     mAgent    = null;
     mOnFinish = null;
 }
Beispiel #4
0
 public bool LookTo(GameObject agent, bool requestLockBack, OnFinishLook callback)
 {
     if (mOnFinish != null)
     {
         return(false);
     }
     mAgent           = agent;
     mRequestLockBack = requestLockBack;
     mOnFinish        = callback;
     return(true);
 }
Beispiel #5
0
 public void Update()
 {
     if (mRequest)
     {
         transform.rotation = Quaternion.Slerp(transform.rotation, mLookRotation, Time.deltaTime * 5);
         var angleNPC = Quaternion.Angle(transform.rotation, mLookRotation);
         // Debug.Log(angleNPC.ToString());
         if (angleNPC <= 0.5)
         {
             mRequest = false;
             if (mOnFinish != null)
             {
                 var callBack = mOnFinish;
                 mOnFinish = null;
                 callBack(this);
             }
         }
     }
 }
Beispiel #6
0
 public void LookTo(Vector3 d, OnFinishLook callback)
 {
     mLookRotation = Quaternion.LookRotation(d.normalized);
     mOnFinish     = callback;
     mRequest      = true;
 }
Beispiel #7
0
    public void LookTo(Transform to, OnFinishLook callback)
    {
        Vector3 d = to.position - transform.position;

        LookTo(d, callback);
    }