Exemplo n.º 1
0
        /// <summary>
        /// 设置移动目标参数
        /// </summary>
        /// <param name="vec3"> 目标坐标 </param>
        /// <param name="offsetY"> Y轴相对偏移值(旋转角度计算 某些模型朝向非z轴正向) </param>
        /// <param name="axisY"> 旋转角度是否计算Y轴 </param>
        public void SetMoveTarget(Vector3 vec3, float offsetY = 0, bool axisY = false)
        {
            bool rotate = false;

            TarPos = vec3;
            Vector3 movingDir = mTarPos - mPos;

            rotate          = movingDir != mMovingDir;
            mMovingDis      = movingDir.magnitude;
            mLimitMovingDis = movingDir.magnitude;
            if (mMovingDis > 0)
            {
                mMovingDir = movingDir.normalized;
            }
            Vector3 angles = Vector3.zero;

            if (axisY == false)
            {
                angles = Mathex.GetAnglesNoY(mPos, vec3);
            }
            else
            {
                angles = Mathex.GetAngles(mPos, vec3);
            }
            angles.y  += offsetY;
            mTarAngles = new Vector3(angles.z, angles.y, angles.x);  //项目用法  不知是否是模型偏移了90°导致的
            if (rotate == true)
            {
                if (mRotateRate == 0)
                {
                    return;
                }
                mRotateTabTime = Time.realtimeSinceStartup;
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 刷新欧拉角角度
 /// </summary>
 protected virtual void RefreshAngles()
 {
     if (mRotateRate != 0)
     {
         if (mRotateTabTime > 0)
         {
             float cur = Time.realtimeSinceStartup;
             float off = cur - mRotateTabTime;
             if (mRotateRate - off >= 0)
             {
                 Mathex.GetRangeAngles(ref mAngles, ref mTarAngles);
                 if (off == 0)
                 {
                     off = mRotateRate;
                 }
                 Vector3 angles = Mathex.GetLinearPoint(mAngles, mTarAngles, off);
                 SetEulerAngle(angles);
             }
             else
             {
                 SetEulerAngle(mTarAngles);
                 mRotateTabTime = 0;
             }
         }
     }
     else
     {
         SetEulerAngle(mTarAngles);
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 设置欧拉角角度
 /// </summary>
 public void SetEulerAngle(Vector3 vec3)
 {
     vec3.y  = Mathex.GetModAngles(vec3.y);
     mAngles = vec3;
 }