コード例 #1
0
ファイル: JarController.cs プロジェクト: linxscc/bnyx
        bool OnHurt(DamageData damageData)
        {
            switch (animator.GetInteger("state"))
            {
            case 0:
                // playDamageEffectAnim(damageData.damageEffectType, damageData.collideBounds.center, MathUtils.SpeedToDirection(damageData.force));
                playEffectAnim("daji1", damageData.collideBounds.center, MathUtils.SpeedToDirection(damageData.force));
                animator.SetInteger("state", 1);
                drop();
                break;

            case 1:
                break;
            }
            return(true);
        }
コード例 #2
0
 bool OnHurt(DamageData damageData)
 {
     if (damageData.teamId != GetComponentInParent <RoleController>().RoleData.TeamId)
     {
         float   angle           = damageData.SpecialEffectRotation;
         Vector3 moveOrientation = Quaternion.AngleAxis(angle, Vector3.forward) * Vector3.right;
         DebugManager.Instance.AddDrawGizmos("rolehurthammer" + gameObject.GetInstanceID(), () =>
         {
             Gizmos.DrawSphere(damageData.collidePoint, 0.5f);
         });
         AnimManager.Instance.PlayAnimEffect("RoleHurtEffect", new Vector3(damageData.collidePoint.x, damageData.collidePoint.y, transform.position.z - 0.1f), 0, damageData.direction.x < 0, moveOrientation, transform);
         return(true);
     }
     else
     {
         return(false);
     }
 }
コード例 #3
0
ファイル: HitAndHurtController.cs プロジェクト: linxscc/bnyx
        public bool Hurt(DamageData damageData, HurtPart hurtPart)
        {
            IObjectController ownerObjectController = damageData.owner.GetComponent<IObjectController>();
            
            // 强制位移 add by TangJian 2019/4/30 10:29
            Vector3 forcedOffset = Vector3.zero;
            if(damageData.useForcedOffset && ownerObjectController != null && ObjectController is RoleController)
            {
                forcedOffset = CalcOffset(ownerObjectController, ObjectController, damageData.forcedOffset);

                // 如果是角色则执行移动 add by TangJian 2019/5/10 17:54
                (ObjectController as RoleController)?.DoMoveBy(forcedOffset, damageData.forcedOffsetDuration).SetEase(Ease.OutSine);
            }
            
            // 播放特效
            if (damageData is HitAble selfHitAble && ObjectController is HurtAble hurtAble)
            {
                Vector3 rendererOffset = Vector3.zero;
                if (damageData.effectOrientation.z > 0)
                {
                    rendererOffset.z += 0.1f;
                }
                else
                {
                    rendererOffset.z -= 0.1f;
                }
                     
                Vector3 worldPos;
                if (TryGetHitPos(out worldPos))
                {
                    // 打击特效
                    BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy);   
                }
                else
                {
                    // 打击特效
                    BothAnimManager.Instance.PlayHurtEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, damageData.collidePoint + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, 0, damageData.targetMoveBy);
                }
                AudioManager.Instance.PlayEffect(selfHitAble.GetHitEffectType(), hurtPart.MatType, worldPos + rendererOffset + forcedOffset);
            }

            return true;
        }
コード例 #4
0
ファイル: ActionDataExecutor.cs プロジェクト: linxscc/bnyx
        public static async void ExecuteRoleAction(RoleController roleController, ActionData actionData)
        {
            if (actionData.chance >= Random.Range(0, 101))
            {
                switch (actionData.type)
                {
                case ActionType.AddAttr:
                {
                    roleController.AddAttr((AttrType)actionData.int1, actionData.float1);
                    // roleController.AddAttr(actionData.string1, actionData.float1);
                }
                break;

                case ActionType.AddAnim:
                {
                    var animGameObject = AnimManager.Instance.PlayAnim(actionData.type + actionData.string1, actionData.string1, actionData.bool1, roleController.CharacterController.bounds.center + new Vector3(0, 0, -0.5f), 1, 1, actionData.float1, roleController.transform);
                }
                break;

                case ActionType.RemoveAnim:
                {
                    AnimManager.Instance.removeAnim(actionData.type + actionData.string1);
                }
                break;

                case ActionType.SetColor:
                    // 变红
                    roleController.SkeletonAnimator.skeleton.DoColorTo(new Color(actionData.float1, actionData.float2, actionData.float3), 0.2f).OnComplete(() =>
                    {
                        roleController.SkeletonAnimator.skeleton.DoColorTo(Color.white, 0.2f);
                    });
                    break;

                case ActionType.CreateDamage:
                    var triggerObject = GameObject.Instantiate(await AssetManager.LoadAssetAsync <GameObject>("Assets/Resources_moved/Prefabs/Trigger/TriggerCube.prefab"));
                    triggerObject.tag   = "Damage";
                    triggerObject.layer = LayerMask.NameToLayer("Interaction");

                    float destroyDelayTime = 0.1f;

                    Tools.RemoveComponent <TriggerController>(triggerObject);
                    var damageController = triggerObject.AddComponent <DamageController>();

                    // 不渲染 add by TangJian 2017/07/07 22:40:39
                    {
                        var meshRenderer = triggerObject.GetComponent <MeshRenderer>();
                        if (DebugManager.Instance.debugData.debug)
                        {
                            meshRenderer.enabled = true;
                            destroyDelayTime     = 1;
                        }
                        else
                        {
                            meshRenderer.enabled = false;
                        }
                    }

                    // 设置大小 add by TangJian 2017/07/07 22:40:40
                    {
                        var boxCollider = triggerObject.GetComponent <BoxCollider>();
                        triggerObject.transform.localScale = new Vector3(actionData.vector3_2.x, actionData.vector3_2.y, actionData.vector3_2.z);
                    }

                    // 设置位置 add by TangJian 2017/07/07 22:34:48
                    {
                        triggerObject.transform.parent = roleController.gameObject.transform.parent;

                        // var a = direction;

                        var x = roleController.gameObject.transform.localPosition.x + actionData.vector3_1.x * roleController.GetDirectionInt();
                        var y = roleController.gameObject.transform.localPosition.y + actionData.vector3_1.y;
                        var z = roleController.gameObject.transform.localPosition.z + actionData.vector3_1.z;

                        triggerObject.transform.localPosition = new Vector3(x, y, z);
                    }

                    var damageData = new DamageData();
                    damageController.damageData = damageData;

                    // 设置持有者 add by TangJian 2017/07/27 20:26:44
                    damageData.teamId           = roleController.RoleData.TeamId;
                    damageData.owner            = roleController.gameObject;
                    damageData.itriggerDelegate = roleController;

                    // 力度 add by TangJian 2017/07/24 15:16:23
                    {
                        damageData.force = new Vector3(roleController.GetDirectionInt() * actionData.vector3_3.x, actionData.vector3_3.y, actionData.vector3_3.z);
                    }

                    // 攻击方向 add by TangJian 2017/07/24 15:17:37
                    {
                        damageData.direction = new Vector3(roleController.GetDirectionInt() * (int)actionData.int2, 0, 0);
                    }

                    // 攻击类别 add by TangJian 2017/07/24 15:17:35
                    {
                        damageData.hitType = (int)actionData.int1;
                    }

                    // 攻击击退 add by TangJian 2017/08/29 22:18:55
                    // {
                    //     damageData.targetMoveBy = new Vector3(roleController.getDirectionInt() * roleAtkFrameEventData.targetMoveBy.x, roleAtkFrameEventData.targetMoveBy.y, roleAtkFrameEventData.targetMoveBy.z);
                    // }

                    // 伤害效果类型 add by TangJian 2017/08/16 15:33:01
                    // {
                    //     var mainHandWeapon = RoleData.EquipData.getMainHand<WeaponData>();
                    //     if (mainHandWeapon != null)
                    //     {
                    //         damageData.damageEffectType = mainHandWeapon.damageEffectType;
                    //     }
                    // }

                    // 攻击力 add by TangJian 2017/07/24 15:17:22
                    // damageData.atk = roleData.Atk * roleAtkFrameEventData.atk;

                    // 暴击 add by TangJian 2017/12/20 21:50:30
                    // if (roleData.FinalCriticalRate >= UnityEngine.Random.Range(0.0f, 1.0f))
                    // {
                    //     //damageData.isCritical = true;
                    //     //damageData.atk *= roleData.CriticalDamage;
                    // }

                    triggerObject.DestoryChildren();
                    Tools.Destroy(triggerObject, destroyDelayTime);
                    break;
                }
            }
        }
コード例 #5
0
ファイル: BoomController.cs プロジェクト: linxscc/bnyx
 public override bool OnHit(DamageData damageData)
 {
     return(base.OnHit(damageData));
 }
コード例 #6
0
        public virtual bool OnHit(DamageData damageData)
        {
            // 事件分发
            if (OnHitEvent != null)
            {
                OnHitEvent(damageData);
            }

            // buff刷新
            BuffController.TriggerBuffEvent(BuffEventType.OnHit, damageData);

            // 代理执行击中 add by TangJian 2019/5/10 17:20
            _hitAndHurtDelegate.Hit(damageData);

            // 空中击中对象, 自己浮空
            if (isGrounded == false)
            {
                if (damageData.itriggerDelegate is HurtAble && damageData.itriggerDelegate is IObjectController objectController)
                {
                    //击退 add by TangJian 2018/12/8 14:55
                    if (damageData.targetMoveBy.magnitude > 0.01f)
                    {
                        speed.y = (damageData.targetMoveBy *
                                   (1f - (objectController.IsDefending ? objectController.DefenseRepellingResistance : objectController.RepellingResistance))
                                   ).MoveByToSpeed().y;
                    }
                }
            }

            // 添加碰撞伤害
//            if (damageData.hitType == (int) HitType.Fly)
//            {
//                this.DelayToDo(0.1f, () =>
//                {
//                    if (damageData.hitGameObject.GetComponent<RoleController>() is IObjectController otherObjController)
//                    {
//                        var damageSize = new Vector3(1, 1, 1);
//                        HitType hittype = HitType.Fly;
//
//                        string damageControllerId = Tools.getOnlyId().ToString();
//                        string damageId = Tools.getOnlyId().ToString();
//
//                        var damageController = FrameEventMethods.RoleAtk((ITriggerDelegate) otherObjController, damageControllerId, damageId,
//                            _roleData.TeamId, FrameEventInfo.ParentType.Transform
//                            , PrimitiveType.Cube
//                            , Vector3.zero
//                            , damageSize
//                            , new Vector3(GetDirectionInt(), 0, 0)
//                            , hittype
//                            , Vector3.zero
//                            , DamageDirectionType.UseSpeed
//                            , DamageEffectType.Strike
//                            , AtkPropertyType.physicalDamage
//                            , 1
//                            , 1);
//
//                        damageController.SetId(damageControllerId);
//
//                        // 设计击飞攻击效果为其他
//                        damageController.damageData.HitEffectType = HitEffectType.Other;
//
//                        // 绑定到攻击对象的身上
//                        damageController.bindType = FrameEventInfo.RoleAtkFrameEventData.BindType.BindObjectController;
//                        damageController.ObjectController = otherObjController;
//
//                        damageController.NeedRemoveSelf = () => otherObjController.Speed.y <= 0 && otherObjController.IsGrounded();
//                    }
//
//                });
//            }
            return(true);
        }
コード例 #7
0
 public override bool OnHit(DamageData damageData)
 {
     PlayJoinAnim(true);
     return(base.OnHit(damageData));
 }
コード例 #8
0
ファイル: RoleControllerMethods.cs プロジェクト: linxscc/bnyx
        // 受伤 add by TangJian 2018/12/8 1:54
        public virtual bool Hurt(DamageData damageData)
        {
            Direction oldDirection = GetDirection();

            // 扣血 add by TangJian 2017/07/14 18:02:17
            if (IsDefending

                && damageData.ignoreShield == false // 不无视防御 add by TangJian 2019/4/3 17:16

                )
            {
                //方向判断
                AnimationSwitch(damageData, false, true);

                //体力判断
                {
                    // 伤害计算和扣血 add by TangJian 2019/4/2 16:44
                    float HurtNum = this.DoLoseHp(damageData.atk);

                    // 自身动画状态设置 add by TangJian 2019/4/2 16:44
                    {
                        if (animatorParams.ContainsKey("NoDefence"))
                        {
                            _animator.SetBool("NoDefence", true);
                        }

                        _animator.SetInteger("Defence_hurt_type", 3);
                        AnimManager.Instance.WeaponCremaShake(FrameEventInfo.CameraShakeType.mediumshape);
                        if (RoleData.Hp <= 0)
                        {
                            WeaponByDieAni(damageData.WeapondeadType, HurtNum);
                        }
                        else
                        {
                            _animator.SetTrigger("hurt");
                        }
                    }

                    // 额外效果 add by TangJian 2019/4/2 16:44
                    {
                        float   angle           = damageData.SpecialEffectRotation;
                        Bounds  bounds          = new Bounds(transform.position + RoleData.DefendBoundcenter, RoleData.DefendBoundsize);
                        Vector3 localPos        = transform.InverseTransformPoint(damageData.collideBounds.center);
                        Vector3 posse           = transform.position + localPos;
                        Vector3 overpos         = bounds.ClosestPoint(posse);
                        Vector3 moveOrientation = Quaternion.AngleAxis(angle, Vector3.forward) * Vector3.right;
                        moveOrientation.y = Mathf.Abs(moveOrientation.y);
                    }
                }
            }
            else
            {
                // 伤害计算和扣血 add by TangJian 2019/4/2 16:44
                float HurtNum = this.DoLoseHp(damageData.atk);

                #region //2019.3.29// 动画状态机设置
                {
                    // 设置无视防御状态 add by TangJian 2019/4/3 17:50
                    if (damageData.ignoreShield)
                    {
                        RoleAnimator.SetTrigger("ignore_shield");
                    }

                    if (RoleData.Hp <= 0)
                    {
                        WeaponByDieAni(damageData.WeapondeadType, HurtNum);
                    }

                    //地面血迹 2019.3.29
                    AnimManager.Instance.PlayAnimEffect("BloodSubface", transform.position, 0, damageData.direction.x < 0, Vector3.right, transform);

                    //判断是否需要转身 2019.4.4
                    bool IsneedTurnback = RoleData.NeedTurnBack;
                    if (IsneedTurnback)
                    {
                        if (damageData.hitType != (int)HitType.Fly)
                        {
                            IsneedTurnback = false;
                        }
                    }
                    AnimationSwitch(damageData, IsneedTurnback);
                }
                #endregion

                // 额外动画
                {
                    // 播放掉血动画
                    if (HurtNum > 0)
                    {
                        this.PlayLoseHpAnim(HurtNum, damageData.isCritical);
                    }
                }

                // 使用代理实现受伤 add by TangJian 2019/5/10 17:56
                _hitAndHurtDelegate.Hurt(damageData);
            }

            // 霸体状态处理 add by TangJian 2018/12/8 14:56
            if (RoleData.IsSuperArmor)
            {
                SetDirection(oldDirection); // 霸体被攻击不转面 add by TangJian 2019/3/25 10:54
                _animator.SetBool("hurt", false);
            }
            else
            {
                if (OnHurtEvent != null)
                {
                    OnHurtEvent(damageData);
                }
            }

            //击退 add by TangJian 2018/12/8 14:55
            if (damageData.targetMoveBy.magnitude > 0.01f)
            {
                Speed = (damageData.targetMoveBy * (1f - (IsDefending ? RoleData.DefenseRepellingResistance : RoleData.RepellingResistance))).MoveByToSpeed();
            }

            // 触发受伤事件 add by TangJian 2018/05/14 20:09:38
            BuffController.TriggerBuffEvent(BuffEventType.OnHurt);
            return(true);
        }
コード例 #9
0
ファイル: RoleControllerMethods.cs プロジェクト: linxscc/bnyx
        public virtual void AnimationSwitch(DamageData damageData, bool needTurnBack, bool NoSetHurt = false)
        {
            // 设置力度
            _animator.SetFloat("hurt_force_value", damageData.forceValue);

            bool mode = false;

            if (RoleData.DamageTargetNameList != null)
            {
                if (RoleData.DamageTargetNameList.Count != 0)
                {
                    if (RoleData.DamageTargetNameList.Contains(damageData.hitTarget.name))
                    {
                        mode = true;
                    }
                }
            }

            if (mode)
            {
                if (animatorParams.ContainsKey("hurt_type"))
                {
                    int sd = RoleData.DamageTargetNameList.IndexOf(damageData.hitTarget.name);
                    _animator.SetInteger("hurt_type", sd);
                    _animator.SetFloat("hurt_type", sd);
                }
                if (RoleData.Hp <= 0)
                {
                    _animator.SetBool("isDead", true);
                }
                else
                {
                    if (NoSetHurt)
                    {
                    }
                    else
                    {
                        switch (damageData.forceType)
                        {
                        case DamageForceType.light:
                            if (RoleData.Atklightforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        case DamageForceType.moderate:
                            if (RoleData.Atkmoderateforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        case DamageForceType.heavy:
                            if (RoleData.Atkheavyforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            else
            {
                if (GetDirectionInt() > 0)
                {
                    if (damageData.direction.x > 0)
                    {
                        _animator.SetInteger("hurt_direction", -1);
                        _animator.SetFloat("hurt_direction", -1);
                        if (needTurnBack)
                        {
                            _animator.SetInteger("hurt_direction", 1);
                            _animator.SetFloat("hurt_direction", 1);
                            SetDirection(GetDirection().Reverse());
                        }
                    }
                    else
                    {
                        _animator.SetInteger("hurt_direction", 1);
                        _animator.SetFloat("hurt_direction", 1);
                    }
                }
                else
                {
                    if (damageData.direction.x < 0)
                    {
                        _animator.SetInteger("hurt_direction", -1);
                        _animator.SetFloat("hurt_direction", -1);

                        if (needTurnBack)
                        {
                            _animator.SetInteger("hurt_direction", 1);
                            _animator.SetFloat("hurt_direction", 1);
                            SetDirection(GetDirection().Reverse());
                        }
                    }
                    else
                    {
                        _animator.SetInteger("hurt_direction", 1);
                        _animator.SetFloat("hurt_direction", 1);
                    }
                }

                // 攻击部位体现 add by TangJian 2017/07/10 20:59:29
                _animator.SetInteger("hurt_type", damageData.hitType);
                _animator.SetFloat("hurt_type", damageData.hitType);

                // 设置攻击状态 add by TangJian 2017/07/14 18:06:02
                if (RoleData.Hp <= 0)
                {
                    _animator.SetBool("isDead", true);
                }
                else
                {
                    if (NoSetHurt)
                    {
                    }
                    else
                    {
                        switch (damageData.forceType)
                        {
                        case DamageForceType.light:
                            if (RoleData.Atklightforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        case DamageForceType.moderate:
                            if (RoleData.Atkmoderateforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        case DamageForceType.heavy:
                            if (RoleData.Atkheavyforcetype == false)
                            {
                                _animator.SetBool("hurt", true);
                                _animator.SetTrigger("hurt");
                            }
                            break;

                        default:
                            break;
                        }
                    }

                    //animator.SetBool("hurt", true);
                }
            }
        }
コード例 #10
0
        // 受击 add by TangJian 2019/5/10 18:28
        public override bool OnHurt(DamageData damageData)
        {
            switch (Placementdata.hporCount)
            {
            case tian.HporCount.None:
                Explode(damageData.targetMoveBy);
                Drop();
                Destroy(gameObject);
                break;

            case tian.HporCount.count:
                if (CurrAtkCount < Placementdata.atkcount - 1)
                {
                    State = 1;
                    HitAndHurtDelegate.Hurt(damageData);

                    CurrAtkCount++;
                }
                else
                {
                    Explode(damageData.targetMoveBy);
                    Destroy(gameObject);
                }
                break;

            case tian.HporCount.Hp:
                float damage = 0;
                switch (damageData.atkPropertyType)
                {
                case AtkPropertyType.physicalDamage:
                    damage = damageData.atk;
                    break;

                case AtkPropertyType.magicalDamage:
                    damage = damageData.magical;
                    break;

                case AtkPropertyType.mixDamage:
                    damage = damageData.atk + damageData.magical;
                    break;

                default:
                    break;
                }
                CurrHp -= damage;
                if (CurrHp > 0)
                {
                }
                else
                {
                    Explode(damageData.targetMoveBy);
                    Drop();
                    Destroy(gameObject);
                }
                break;

            default:
                break;
            }

            return(true);
        }
コード例 #11
0
ファイル: HitAndHurtController.cs プロジェクト: linxscc/bnyx
        public bool Hit(DamageData damageData)
        {
            var speed = ObjectController.Speed;
            
            // 强制位移
             Vector3 forcedOffset = Vector3.zero;
            
            // 击退
            var selfObjectController = ObjectController;
            var selfHitAndMat = selfObjectController as HitAble;

            var otherObjectController = damageData.hitGameObject.GetComponent<IObjectController>();
            var otherHurtAble = damageData.hitGameObject.GetComponent<HurtAble>();
            
            
            if (otherObjectController != null && otherObjectController.CanRebound)
            {
                if (otherObjectController.IsDefending)
                {
                    Vector3 moveBySpeed = (damageData.targetMoveBy * (-otherObjectController.DefenseRepellingResistance)).MoveByToSpeed();
                    if (ObjectController.Speed.magnitude < moveBySpeed.magnitude)
                    {
                        // 去除y方向的反弹效果 add by TangJian 2019/1/26 17:19
                        speed.x = moveBySpeed.x;
                        speed.z = moveBySpeed.z;
                    }
                }
                else
                {
                    Vector3 moveBySpeed = (damageData.targetMoveBy * (-otherObjectController.RepellingResistance)).MoveByToSpeed();
                    if (speed.magnitude < moveBySpeed.magnitude)
                    {
                        // 去除y方向的反弹效果 add by TangJian 2019/1/26 17:19
                        speed.x = moveBySpeed.x;
                        speed.z = moveBySpeed.z;
                    }
                }
                
                // 强制位移 add by TangJian 2019/4/30 10:29
                if(damageData.useForcedOffset && otherObjectController is RoleController)
                {
                    forcedOffset = CalcOffset(selfObjectController, otherObjectController, damageData.forcedOffset);
                }
            }

            if (otherObjectController.IsGrounded())
            {
                
            }

            if (otherHurtAble != null && selfHitAndMat != null)
            {
                // 攻击击中时动画暂停
                AnimSuspend(damageData.selfSuspendTime, 1f + (damageData.selfSuspendScale - 1f) * otherHurtAble.Damping);
                
                Vector3 rendererOffset = Vector3.zero;
                if (damageData.effectOrientation.z > 0)
                {
                    rendererOffset.z = otherObjectController.BackZ;
                }
                else
                {
                    rendererOffset.z = otherObjectController.FrontZ;
                }

                Vector3 worldPos;
                if (otherHurtAble.TryGetHitPos(out worldPos))
                {
                    // 打击特效
                    BothAnimManager.Instance.PlayHitEffect(selfHitAndMat.GetHitEffectType(), otherHurtAble.GetMatType(), worldPos + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, damageData.effectOrientation.GetAngleZ());
                }
                else
                {
                    switch (otherHurtAble.EffectShowMode)
                    {
                        case EffectShowMode.FrontOrBack :
                            BothAnimManager.Instance.PlayHitEffect(selfHitAndMat.GetHitEffectType(), otherHurtAble.GetMatType(), new Vector3(damageData.collidePoint.x, damageData.collidePoint.y, otherObjectController.transform.position.z) + rendererOffset + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, damageData.effectOrientation.GetAngleZ());
                            break;
                        case EffectShowMode.ColliderPoint:
                            BothAnimManager.Instance.PlayHitEffect(selfHitAndMat.GetHitEffectType(), otherHurtAble.GetMatType(), damageData.collidePoint + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, damageData.effectOrientation.GetAngleZ());
                            break;
                        default:
                            BothAnimManager.Instance.PlayHitEffect(selfHitAndMat.GetHitEffectType(), otherHurtAble.GetMatType(), damageData.collidePoint + forcedOffset, damageData.direction.x > 0 ? Direction.Right : Direction.Left, damageData.effectOrientation.GetAngleZ());
                            break;
                    }
                } 
                AudioManager.Instance.PlayEffect(selfHitAndMat.GetHitEffectType(),otherHurtAble.GetMatType(), worldPos + rendererOffset + forcedOffset);
            }

            selfObjectController.Speed = speed;
            return true;
        }