diff --git a/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs b/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs index 4bcab53..12666cb 100644 --- a/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs +++ b/Assets/Code/Scripts/Enemies/LivingRoot/SlowdownArea.cs @@ -8,7 +8,7 @@ public class SlowdownArea : MonoBehaviour public float slowSpeed; public float timer; - private float baseSpeed; + private float baseJump; private bool isInZone = false; private PlayerMovement player; @@ -19,7 +19,6 @@ public class SlowdownArea : MonoBehaviour if (area.CompareTag("Player")){ player = area.GetComponent(); jump = area.GetComponent(); - baseSpeed = player.WalkSpeed; baseJump = 5.0f; jump.JumpForce = 1.5f; isInZone = true; @@ -32,7 +31,7 @@ public class SlowdownArea : MonoBehaviour { isInZone = false; timer = 0f; - player.WalkSpeed = baseSpeed; + player.ApplySlow(1f); jump.JumpForce = baseJump; } } @@ -46,6 +45,6 @@ public class SlowdownArea : MonoBehaviour timer += Time.deltaTime; float t = Mathf.Clamp(timer * slowSpeed, 0f, 1f); float multiplicator = Mathf.Lerp(1f, maxSlow, t); - player.WalkSpeed = baseSpeed * multiplicator; + player.ApplySlow(multiplicator); } } diff --git a/Assets/Code/Scripts/Player/PlayerMovement.cs b/Assets/Code/Scripts/Player/PlayerMovement.cs index 554fea3..7e1ef2b 100644 --- a/Assets/Code/Scripts/Player/PlayerMovement.cs +++ b/Assets/Code/Scripts/Player/PlayerMovement.cs @@ -14,12 +14,17 @@ public class PlayerMovement : MonoBehaviour private Vector3 moveDirection; + // used for root enemies + private float baseWalkSpeed; + private float slowMultiplier = 1f; + private void Awake() { m_rigidbody = GetComponent(); input = GetComponent(); animator = GetComponent(); headController = GetComponent(); + baseWalkSpeed = WalkSpeed; if (m_rigidbody != null) { @@ -27,6 +32,11 @@ public class PlayerMovement : MonoBehaviour } } + public void ApplySlow(float multiplier) + { + slowMultiplier = multiplier; + } + private void FixedUpdate() { Vector2 m_moveAmt = input.MoveAmount; @@ -48,7 +58,7 @@ public class PlayerMovement : MonoBehaviour if (headController.isHoldingHead) { m_rigidbody.MovePosition( - m_rigidbody.position + Time.deltaTime * WalkSpeed * moveDirection + m_rigidbody.position + Time.deltaTime * baseWalkSpeed * slowMultiplier * moveDirection ); } else @@ -56,7 +66,7 @@ public class PlayerMovement : MonoBehaviour if (moveDirection.magnitude >= 0.1f) { m_rigidbody.MovePosition( - m_rigidbody.position + Time.deltaTime * WalkSpeed * moveDirection + m_rigidbody.position + Time.deltaTime * baseWalkSpeed * slowMultiplier * moveDirection ); Quaternion targetRotation = Quaternion.LookRotation(moveDirection);