Пример #1
0
    /// <summary>
    /// 从对象池中取出技能延迟特效的对象 by吴江
    /// </summary>
    /// <param name="_pos"></param>
    /// <param name="_rot"></param>
    /// <returns></returns>
    public AbilityDelayEffectCtrl SpawnAbilityDelayEffectCtrl(AbilityDelayEffectRefData _delayData, Transform _userTransform)
    {
        if (_delayData == null || _userTransform == null)
        {
            if (_delayData == null)
            {
                Debug.LogError("技能延迟特效信息为空!");
            }
            return(null);
        }

        float eulerAngleY = _userTransform.localEulerAngles.y;
        float x           = Mathf.Sin(eulerAngleY * Mathf.Deg2Rad) * _delayData.diffPos.z + Mathf.Cos(eulerAngleY * Mathf.Deg2Rad) * _delayData.diffPos.x;
        float z           = Mathf.Cos(eulerAngleY * Mathf.Deg2Rad) * _delayData.diffPos.z + Mathf.Sin(eulerAngleY * Mathf.Deg2Rad) * _delayData.diffPos.x;
        // Debug.logger.Log("eulerAngleY = " + eulerAngleY + " , Mathf.Sin(eulerAngleY * Mathf.Deg2Rad) = " + Mathf.Sin(eulerAngleY * Mathf.Deg2Rad) + " , Mathf.Cos(eulerAngleY * Mathf.Deg2Rad) = " + Mathf.Cos(eulerAngleY * Mathf.Deg2Rad));
        Vector3 diffPos = new Vector3(x, _delayData.diffPos.y, z);
        Vector3 pos     = diffPos + _userTransform.position;
        // Debug.logger.Log("玩家坐标" + _userTransform.position + " , 差异坐标" + diffPos + " , 最终坐标" + pos);
        AbilityDelayEffectCtrl abilityDelayEffectCtrl = abilityDelayEffectCtrlPool.Request(pos, _userTransform.rotation);

        abilityDelayEffectCtrl.OnSpawned(_delayData.effectName, _delayData.startTIme, _delayData.duration, pos);
        return(abilityDelayEffectCtrl);
    }
Пример #2
0
 /// <summary>
 /// 将技能延迟特效对象归还到对象池 by吴江
 /// </summary>
 /// <param name="_indicator"></param>
 public void DespawnAbilityDelayEffectCtrl(AbilityDelayEffectCtrl _abilityDelayEffectCtrl)
 {
     _abilityDelayEffectCtrl.OnDespawned();
     abilityDelayEffectCtrlPool.Return(_abilityDelayEffectCtrl);
 }