From 026c01967d1ac180accca3b4e458cb9455487b21 Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Fri, 15 Dec 2023 20:10:05 +0000 Subject: [PATCH] Added fall damage --- Assets/Scripts/PlayerController.cs | 32 +++++++++++++++++++++++++++++++- 1 files changed, 31 insertions(+), 1 deletions(-) diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index 4bf68d8..f918a23 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -8,6 +8,8 @@ { public float moveSpeed = 5f; public float maxFallSpeed = -20f; + public float maxFallSpeedDamge = -10f; + private float maxFallSpeedCurrent = 0f; Vector2 moveInput; Rigidbody2D rb; @@ -15,6 +17,7 @@ Animator animator_rotor; public GameObject rotorGO; TouchingDirections touchingDirections; + Damageable health; [SerializeField] private bool _isMoving; @@ -56,7 +59,9 @@ } } - public bool CanMove { get + public bool CanMove + { + get { return animator.GetBool(AnimationStrings.canMove); } @@ -70,6 +75,7 @@ animator = GetComponent<Animator>(); animator_rotor = rotorGO.GetComponent<Animator>(); touchingDirections = GetComponent<TouchingDirections>(); + health = GetComponent<Damageable>(); } private void FixedUpdate() @@ -98,6 +104,25 @@ { // moving upwards no falling rb.velocity = new Vector2(moveInput.x * moveSpeed, (moveInput.y * moveSpeed)); + } + } + if (touchingDirections.IsGrounded) + { + if (maxFallSpeedCurrent < maxFallSpeedDamge) + { + TakeFallDamage(Math.Abs((int)maxFallSpeedCurrent)); + maxFallSpeedCurrent = 0; + } + } + else if (IsFlying) + { + maxFallSpeedCurrent = rb.velocity.y; + } + else + { + if (maxFallSpeedCurrent > rb.velocity.y) + { + maxFallSpeedCurrent = rb.velocity.y; } } } @@ -134,6 +159,11 @@ } } + public void TakeFallDamage(int fallDamage) + { + health.Hit(fallDamage); + } + //public void OnRun(InputAction.CallbackContext context) //{ // if (context.started) // Button pressed -- Gitblit v1.9.3