Ejemplo n.º 1
0
 private void RenderAura()
 {
     if (_auraState == eAuraState.Creating)
     {
         _auraTime++;
         float scale = (float)_auraTime / AuraCreatingDuration;
         _auraTf.localScale = new Vector3(scale, scale, 1);
         float zAngle = AuraCreatingDuration * 1f / 15 * _auraTime - 0.5f * _auraTime * _auraTime * 1f / 15;
         _auraTf.localEulerAngles = new Vector3(0, 0, zAngle);
         if (_auraTime >= AuraCreatingDuration)
         {
             _auraTime  = 0;
             _auraState = eAuraState.Normal;
         }
     }
     else if (_auraState == eAuraState.Normal)
     {
         _auraTime++;
         // 后一个数字t是周期,t帧为一个周期,前一个360为角度
         // 通常顺序是 (_auraTime / t) * 360
         float angle = _auraTime * 360f / 720;
         _auraTf.localEulerAngles = new Vector3(45f * Mathf.Sin(angle * Mathf.Deg2Rad), -45f * Mathf.Sin(angle * 0.5f * Mathf.Deg2Rad), _auraTime * 0.6f);
     }
     else if (_auraState == eAuraState.Disappearing)
     {
         _auraTime++;
         float scale = 1 - (float)_auraTime / AuraCreatingDuration;
         _auraTf.localScale = new Vector3(scale, scale, 1);
         float realTime = _auraTime + _auraDisappearTime;
         float angle    = realTime * 360f / 360;
         _auraTf.localEulerAngles = new Vector3(-45f * Mathf.Sin(angle * Mathf.Deg2Rad), 45f * Mathf.Sin(angle * Mathf.Deg2Rad), realTime * 0.6f);
         if (_auraTime >= AuraDisappearingDuration)
         {
             _isShowAura = false;
         }
     }
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 显示魔法阵
 /// </summary>
 /// <param name="isShow">显示、隐藏</param>
 /// <param name="ani">是否有出现、消失动画</param>
 public void ShowAura(bool isShow, bool ani)
 {
     if (isShow)
     {
         if (!ani)
         {
             _auraState         = eAuraState.Normal;
             _auraTf.localScale = Vector3.one;
             _auraTime          = 0;
         }
         else
         {
             _auraState = eAuraState.Creating;
             _auraTime  = 0;
         }
         _isShowAura = isShow;
     }
     else
     {
         if (!_isShowAura)
         {
             return;
         }
         if (!ani)
         {
             _isShowAura        = false;
             _auraTf.localScale = Vector3.zero;
         }
         else
         {
             _auraDisappearTime = _auraTime;
             _auraTime          = 0;
             _auraState         = eAuraState.Disappearing;
         }
     }
 }