/// <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); }
/// <summary> /// 将技能延迟特效对象归还到对象池 by吴江 /// </summary> /// <param name="_indicator"></param> public void DespawnAbilityDelayEffectCtrl(AbilityDelayEffectCtrl _abilityDelayEffectCtrl) { _abilityDelayEffectCtrl.OnDespawned(); abilityDelayEffectCtrlPool.Return(_abilityDelayEffectCtrl); }