hch
2025-10-30 dc7922d80c1d133b6261b8af1d521567d2c0a35d
Main/System/Battle/BattleObject/BattleObject.cs
@@ -87,6 +87,8 @@
        buffMgr = new BattleObjectBuffMgr();
        buffMgr.Init(this);
        buffMgr.onIsControlChanged += OnControledChange;
        layerMgr = new BattleObjectLayerMgr();
        layerMgr.Init(this);
@@ -127,6 +129,7 @@
        motionBase.Release();
        motionBase = null;
        buffMgr.onIsControlChanged -= OnControledChange;
        buffMgr.Release();
        buffMgr = null;
        teamHero = null;
@@ -136,6 +139,24 @@
        {
            GameObject.DestroyImmediate(heroGo);
            heroGo = null;
        }
    }
    //  有变化了才会调用这个函数
    private void OnControledChange(int groupType, bool value)
    {
        //  这里是受到硬控时候 需要表现的动画
        if (groupType == BattleConst.HardControlGroup)
        {
            //  从没被硬控到被硬控
            if (value)
            {
                motionBase.SetControledAnimation();
            }
            else
            {
                motionBase.CancelControledAnimation();
            }
        }
    }
@@ -280,7 +301,7 @@
        //  这里
        if (dmgInfo.IsType(DamageType.Dodge))
        if (dmgInfo.IsType(DamageType.Dodge) && !buffMgr.isControled[BattleConst.HardControlGroup])
        {
            if (isLastHit)
            {
@@ -293,6 +314,8 @@
                OnDodgeBegin();
            }
        }
        bool isFatalAttack = (null != deadPack) && isLastHit;
@@ -307,10 +330,21 @@
        }
        else
        {
            if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()))
            if (dmgInfo.IsType(DamageType.Block))
            {
                motionBase.PlayAnimation(MotionName.hit, false);
                battleField.battleEffectMgr.PlayEffect(this, 19999, heroRectTrans, Camp);
            }
            else
            {
                if ((dmgInfo.IsType(DamageType.Damage) || dmgInfo.IsRealdamage()))
                {
                    if (!buffMgr.isControled[BattleConst.HardControlGroup])
                    {
                        motionBase.PlayAnimation(MotionName.hit, false);
                    }
                }
            }
        }
@@ -470,6 +504,7 @@
    public void SetSpeedRatio(float ratio)
    {
        motionBase.SetSpeedRatio(ratio);
        heroInfoBar.SetSpeedRatio(ratio);
    }