NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/Buff/Impl/BuffEmitBulletToTargetEnemy.cs

52 lines
1.3 KiB
C#

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);
}
}
}