diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs index b99d473da..e20149e85 100644 --- a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs @@ -42,8 +42,6 @@ namespace BlueWater.Enemies.Bosses.SandMole public void Stun(float duration) { - if (!CanStun()) return; - _spineController.SetSkin(SandMoleSkin.Normal.ToString()); _spineController.PlayAnimation(SandMoleAnimation.Stun.ToString(), false); IsStunned = true; @@ -54,6 +52,13 @@ namespace BlueWater.Enemies.Bosses.SandMole Utils.StartUniqueCoroutine(this, ref _stunCoolDownCoroutine, Utils.CoolDownCoroutine(duration, EndStun)); } + + public void TryStun(float duration) + { + if (!CanStun()) return; + + Stun(duration); + } public void EndStun() { diff --git a/Assets/02.Scripts/Character/Player/Combat/CombatMovement.cs b/Assets/02.Scripts/Character/Player/Combat/CombatMovement.cs index 2ba563818..1ef48c006 100644 --- a/Assets/02.Scripts/Character/Player/Combat/CombatMovement.cs +++ b/Assets/02.Scripts/Character/Player/Combat/CombatMovement.cs @@ -164,6 +164,10 @@ namespace BlueWater.Players.Combat var isActivatingSkill = _skillHandler?.IsActivatingSkill ?? false; var isStunned = _stunnable?.IsStunned ?? false; + if (isStunned) + { + IsMoving = false; + } var isAttacking = _comboAttackable?.CurrentComboAttackCount > 0; return !isActivatingSkill && !isStunned && !isAttacking; diff --git a/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs b/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs index 274566217..fe4913c87 100644 --- a/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs +++ b/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs @@ -87,13 +87,18 @@ namespace BlueWater.Players.Combat public void Stun(float duration) { - if (!IsStunEnabled) return; - _stunParticle.Play(); IsStunned = true; Utils.StartUniqueCoroutine(this, ref _stunCoolDownCoroutine, Utils.CoolDownCoroutine(duration, EndStun)); } + + public void TryStun(float duration) + { + if (!CanStun()) return; + + Stun(duration); + } public void EndStun() { @@ -117,8 +122,6 @@ namespace BlueWater.Players.Combat public void SlowMoveSpeed(float duration, float moveSpeedCoefficient) { - if (!IsSlowMoveEnabled) return; - _spriteRenderer.material.SetColor(_colorHash, _slowEffectColor); _physicMovable?.SetMoveSpeedCoefficient(moveSpeedCoefficient); @@ -126,6 +129,13 @@ namespace BlueWater.Players.Combat Utils.StartUniqueCoroutine(this, ref _slowMoveSpeedCoolDownCoroutine, Utils.CoolDownCoroutine(duration, EndSlowMoveSpeed)); } + public void TrySlowMoveSpeed(float duration, float moveSpeedCoefficient) + { + if (!CanSlowMove()) return; + + SlowMoveSpeed(duration, moveSpeedCoefficient); + } + public void EndSlowMoveSpeed() { IsSlowedMoveSpeed = false; diff --git a/Assets/02.Scripts/Interface/ISlowable.cs b/Assets/02.Scripts/Interface/ISlowable.cs index d8c233f9d..3de09b844 100644 --- a/Assets/02.Scripts/Interface/ISlowable.cs +++ b/Assets/02.Scripts/Interface/ISlowable.cs @@ -7,6 +7,7 @@ bool CanSlowMove(); void SlowMoveSpeed(float duration, float moveSpeedCoefficient); + void TrySlowMoveSpeed(float duration, float moveSpeedCoefficient); void EndSlowMoveSpeed(); } } \ No newline at end of file diff --git a/Assets/02.Scripts/Interface/IStunnable.cs b/Assets/02.Scripts/Interface/IStunnable.cs index eb3e031c2..cfb8c91ee 100644 --- a/Assets/02.Scripts/Interface/IStunnable.cs +++ b/Assets/02.Scripts/Interface/IStunnable.cs @@ -7,6 +7,7 @@ bool CanStun(); void Stun(float duration); + void TryStun(float duration); void EndStun(); } } \ No newline at end of file diff --git a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/Rhinoceros/SkyFallSmashData.asset b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/Rhinoceros/SkyFallSmashData.asset index c28fbfd8d..68648cdc2 100644 --- a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/Rhinoceros/SkyFallSmashData.asset +++ b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/Rhinoceros/SkyFallSmashData.asset @@ -24,7 +24,7 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 2048 k__BackingField: 0.1 - k__BackingField: 15 + k__BackingField: 30 k__BackingField: 2 k__BackingField: 0.1 k__BackingField: 2 diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/BullCharge.cs b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/BullCharge.cs index 63d9e5976..7004d903e 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/BullCharge.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/BullCharge.cs @@ -125,7 +125,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills isAttacked = true; var iStunnable = raycastHit.transform.GetComponentInParent(); - iStunnable?.Stun(_bullChargeData.StunDuration); + iStunnable?.TryStun(_bullChargeData.StunDuration); var iPhysicMovable = raycastHit.transform.GetComponentInParent(); if (iPhysicMovable == null) continue; diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/HammerSlam.cs b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/HammerSlam.cs index a3c07ca50..1f73409a4 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/HammerSlam.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/HammerSlam.cs @@ -112,7 +112,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills iDamageable.TakeDamage(SkillData.Damage); var iStunnable = hitCollider.transform.GetComponentInParent(); - iStunnable?.Stun(_hammerSlamData.StunDuration); + iStunnable?.TryStun(_hammerSlamData.StunDuration); var iPhysicMovable = hitCollider.GetComponentInParent(); if (iPhysicMovable == null) continue; diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/MeteorSwing.cs b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/MeteorSwing.cs index db65644ea..d2e353734 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/MeteorSwing.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/MeteorSwing.cs @@ -127,7 +127,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills iDamageable.TakeDamage(SkillData.Damage); var iStunnable = hitCollider.transform.GetComponentInParent(); - iStunnable?.Stun(_meteorSwingData.StunDuration); + iStunnable?.TryStun(_meteorSwingData.StunDuration); var iPhysicMovable = hitCollider.GetComponentInParent(); iPhysicMovable?.AddForce(attackDirection * _meteorSwingData.PushPower, ForceMode.Impulse); diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SeismicThrust.cs b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SeismicThrust.cs index 0e6528632..81352f476 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SeismicThrust.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SeismicThrust.cs @@ -109,10 +109,10 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills iDamageable.TakeDamage(SkillData.Damage); var iStunnable = raycastHit.transform.GetComponentInParent(); - iStunnable?.Stun(_seismicThrustData.StunDuration); + iStunnable?.TryStun(_seismicThrustData.StunDuration); var iSlowable = raycastHit.transform.GetComponentInParent(); - iSlowable?.SlowMoveSpeed(_seismicThrustData.SlowDuration, _seismicThrustData.SlowCoefficient); + iSlowable?.TrySlowMoveSpeed(_seismicThrustData.SlowDuration, _seismicThrustData.SlowCoefficient); var iPhysicMovable = raycastHit.transform.GetComponentInParent(); iPhysicMovable?.AddForce(transform.forward * _seismicThrustData.PushPower, ForceMode.Impulse); diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SkyFallSmash.cs b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SkyFallSmash.cs index f43bddf96..2e0547940 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SkyFallSmash.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/Rhinoceros/SkyFallSmash.cs @@ -109,7 +109,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills yield break; } - _rhinoceros.Rigidbody.useGravity = false; + _rhinoceros.Rigidbody.isKinematic = true; while (_animationController.IsComparingCurrentAnimation("SkyFallJump") && _animationController.GetCurrentAnimationNormalizedTime() <= 1f) @@ -178,7 +178,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills HideIndicator(); SkillUser.transform.position = endPosition; - _rhinoceros.Rigidbody.useGravity = true; + _rhinoceros.Rigidbody.isKinematic = false; AudioManager.Instance.PlaySfx("SkyFallSmash"); VisualFeedbackManager.Instance.CameraShake(CombatCameraManager.Instance.BaseCombatCamera, _skyFallSmashData.CameraShakingPower, _skyFallSmashData.CameraShakingDuration); @@ -200,7 +200,7 @@ namespace BlueWater.Enemies.Bosses.Rhinoceros.Skills var iStunnable = hitCollider.transform.GetComponentInParent(); if (iStunnable != null) { - iStunnable.Stun(_skyFallSmashData.StunDuration); + iStunnable.TryStun(_skyFallSmashData.StunDuration); var iPhysicMovable = hitCollider.GetComponentInParent(); var hitVector = hitCollider.transform.position - transform.position; diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/TitanSlime/JumpSlam.cs b/Assets/02.Scripts/Skill/Enemy/Boss/TitanSlime/JumpSlam.cs index 782e89774..a0a13832f 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/TitanSlime/JumpSlam.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/TitanSlime/JumpSlam.cs @@ -259,7 +259,7 @@ namespace BlueWater.Enemies.Bosses.TitanSlime.Skills iDamageable.TakeDamage(_jumpSlamData.Damage); var iSlowable = hitCollider.transform.GetComponentInParent(); - iSlowable?.SlowMoveSpeed(_jumpSlamData.SlowDuration, _jumpSlamData.SlowCoefficient); + iSlowable?.TrySlowMoveSpeed(_jumpSlamData.SlowDuration, _jumpSlamData.SlowCoefficient); var iPhysicMovable = hitCollider.GetComponentInParent(); iPhysicMovable?.AddForce(targetDirection * _jumpSlamData.PushPower, ForceMode.Impulse);