using Gameplay.Area; using Gameplay.Bullet; using UnityEngine; namespace Gameplay.Buff { public class BuffEmitBulletToTargetEnemy : BaseBuff { private int _triggerDistance; private int _emitBulletId; private float _triggerRate; protected override void _OnInit() { base._OnInit(); _triggerDistance = _TryGetIntParam(0); _emitBulletId = _TryGetIntParam(1); _triggerRate = _TryGetFloatParam(2, 1f); } protected override void _OnTrigger() { base._OnTrigger(); var targetEnemy = owner.controlData.targetEnemy; if (targetEnemy == null) { return; } var distance = AreaManager.instance.GetDistance(targetEnemy.transData.cellIndex, owner.transData.cellIndex); if (distance > _triggerDistance) { // 距离不满足 return; } var randomValue = UnityEngine.Random.Range(0f, 1f); if (randomValue > _triggerRate) { // 触发概率不满足 return; } // 发射子弹 BulletManager.instance.EmitBullet(_emitBulletId, targetEnemy, owner); } } }