yyl
2025-09-09 a145fccec270b699d9231891650b19d6857d385a
125 【战斗】战斗系统 修复表现上的一些问题
5个文件已修改
35 ■■■■■ 已修改文件
Main/Component/UI/Effect/BattleEffectPlayer.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleEffectMgr.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/SkillEffect/BulletSkillEffect.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/SkillEffect/SkillEffect.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -30,8 +30,7 @@
        }
    }
    public bool isRedCamp = true;
    public EffectConfig effectConfig;
    public float speedRate = 1f;
@@ -118,7 +117,7 @@
        if (effectConfig.effectPos != null && effectConfig.effectPos.Length >= 2)
        {
            rectTrans.anchoredPosition += new Vector2(effectConfig.effectPos[0], effectConfig.effectPos[1]);
            rectTrans.anchoredPosition += new Vector2((isRedCamp ? 1f : -1f) * effectConfig.effectPos[0], effectConfig.effectPos[1]);
        }
        if (effectConfig.effectScale > 0f)
@@ -416,7 +415,7 @@
    //  创建后的特效会自动隐藏 需要手动调用Play才能播放
    public static BattleEffectPlayer Create(int effectId, Transform parent)
    public static BattleEffectPlayer Create(int effectId, Transform parent, bool isRedCamp)
    {
        // 直接创建特效播放器,不使用对象池
        BattleEffectPlayer battleEffectPlayer = null;
@@ -427,6 +426,10 @@
        battleEffectPlayer.rectTrans = newGo.AddMissingComponent<RectTransform>();
        
        battleEffectPlayer.effectId = effectId;
        // 设置阵营
        battleEffectPlayer.isRedCamp = isRedCamp;
        battleEffectPlayer.SetActive(true);
        return battleEffectPlayer;
    }
Main/System/Battle/BattleEffectMgr.cs
@@ -63,8 +63,9 @@
            effectDict[effectId] = new List<BattleEffectPlayer>();
        }
        bool isRedCamp = camp == BattleCamp.Red;
        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform);
        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform, isRedCamp);
        // 设置特效缩放和方向
        effectPlayer.transform.position = parent.position;
@@ -77,7 +78,7 @@
        effectPlayer.Play(true);
        
        var effectScale = effectPlayer.transform.localScale;
        effectScale.x *= camp == BattleCamp.Red ? 1 : -1;
        effectScale.x *= isRedCamp ? 1 : -1;
        effectPlayer.transform.localScale = effectScale;
        return effectPlayer;
Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -37,18 +37,16 @@
        if (null != bulletTrans)
        {
            bulletTrans.anchoredPosition = pos;
        }
        Vector2 dir = end - start;
        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
        float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg + (caster.Camp == BattleCamp.Red ? 0 : 180);
        if (null != bulletTrans)
        {
            bulletTrans.localRotation = Quaternion.Euler(0, bulletTrans.transform.localScale.x < 0f ? 180 : 0, angle);
            bulletTrans.rotation = Quaternion.Euler(0, 0, angle);
        }
        // if (bulletTrans.transform.localScale.x < 0f)
        // {
        //     bulletTrans.transform.localRotation *= Quaternion.Euler(0, 180, 0);
        // }
        if (t >= 1f)
        {
            finished = true;
Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -242,6 +242,6 @@
            isCurveFinish |= bulletCurve.IsFinished;
        }
        return isCurveFinish && isFinish;
        return isCurveFinish && base.IsFinished();
    }
}
Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -10,6 +10,8 @@
    protected bool isFinish = false;
    protected bool isFinishFrameEnd = false;
    protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
    public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
@@ -64,16 +66,17 @@
    /// </summary>
    public virtual void OnFinalFrameEnd()
    {
        isFinishFrameEnd = true;
    }
    
    public virtual bool IsFinished()
    {
        return isFinish;
        return isFinish && isFinishFrameEnd;
    }
    public virtual void ForceFinished()
    {
        isFinish = true;
        isFinishFrameEnd = true;
    }
}