lcy
24 分钟以前 2e7d66b9b7d541d878b2220fa1e50552e7553708
Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -7,38 +7,53 @@
{
    protected BattleObject caster;
    protected SkillConfig skillConfig;
    protected SkillSkinConfig skillSkinConfig;
    protected BattleEffectPlayer bulletEffect;
    protected RectTransform bulletTrans; // 子弹的RectTransform
    protected RectTransform target;
    protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
    protected Vector2 bulletOffset = Vector2.zero;
    protected bool finished = false;
    protected float duration = 0f;
    protected float elapsed = 0f;
    protected int mBulletIndex;
    protected List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hurts = new List<HB427_tagSCUseSkill.tagSCUseSkillHurt>();
    public BulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
    public BulletCurve(BattleObject caster, SkillConfig skillConfig, SkillSkinConfig _skillSkinConfig, BattleEffectPlayer bulletEffect, RectTransform target,
        List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hurtList, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
    {
        this.caster = caster;
        this.skillConfig = skillConfig;
        skillSkinConfig = _skillSkinConfig;
        this.bulletEffect = bulletEffect;
        this.target = target;
        this.onHit = onHit;
        this.bulletTrans = bulletEffect.transform as RectTransform;
        this.hurts = tagUseSkillAttack.HurtList.ToList();
        this.bulletTrans = bulletEffect.rectTrans;
        this.hurts = hurtList;
        this.mBulletIndex = bulletIndex;
        // 设置bulletTrans坐标为caster.heroRectTrans的世界坐标转换到bulletTrans父节点下的本地坐标
        if (bulletTrans != null && caster.heroRectTrans != null)
        // 设置bulletTrans坐标为caster的世界坐标转换到bulletTrans父节点下的本地坐标
        RectTransform casterRect = caster.GetRectTransform();
        if (bulletTrans != null && casterRect != null)
        {
            var parent = bulletTrans.parent as RectTransform;
            Vector2 localPoint;
            RectTransformUtility.ScreenPointToLocalPointInRectangle(
                parent,
                RectTransformUtility.WorldToScreenPoint(null, caster.heroRectTrans.position),
                RectTransformUtility.WorldToScreenPoint(null, casterRect.position),
                null,
                out localPoint);
            bulletTrans.anchoredPosition = localPoint;
        }
        if (bulletEffect.effectConfig.effectPos != null && bulletEffect.effectConfig.effectPos.Length >= 2)
        {
            bulletOffset = new Vector2(bulletEffect.effectConfig.effectPos[0], bulletEffect.effectConfig.effectPos[1]);
        }
    }
@@ -46,7 +61,6 @@
    {
        finished = false;
        elapsed = 0f;
        duration = skillConfig.BulletFlyTime;
    }
    // 世界坐标转为bulletTrans父节点下的本地坐标
@@ -70,8 +84,8 @@
    protected virtual void ReachTarget()
    {
        finished = true;
        onHit?.Invoke(0, hurts);
        caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, bulletEffect);
        onHit?.Invoke(mBulletIndex, hurts);
        caster.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BulletEffectId, bulletEffect);
    }
    public virtual void ForceFinish()