using UnityEngine; public class FallingDetection : MonoBehaviour { private CharController charController; private Rigidbody2D playerRigidbody; public bool isFalling; private Animator animator; public int counter = 0; private bool wasFallingbefore = false; private AudioSource audioSource; // Reference to the AudioSource component public AudioClip landeSound; // The sound clip to be played public AudioClip sprungSound; // The sound clip to be played public bool isJumping = false; public int counterFall = 0; public bool didLandDuringJump = false; private void Start() { animator = GetComponent(); playerRigidbody = GetComponent(); charController = gameObject.GetComponent(); audioSource = GetComponent(); } private void Update() { Vector3 velocity = playerRigidbody.velocity; //Wenn nicht auf boden und geschwindigkeits offset pos if (!charController.grounded && velocity.y > 0.1f && !isJumping){ didLandDuringJump = charController.grounded; if(!didLandDuringJump){ audioSource.PlayOneShot(sprungSound);} isJumping = true; } if(charController.grounded){ isJumping = false; } //Wenn nicht auf boden und geschwindigkeits offset neg if (!charController.grounded && velocity.y < -0.1f) { //Wenn er bereits fällt, oder der counter erreicht ist zum fallen if (isFalling || counter++>20) { isFalling = true; animator.SetBool("IsFalling", true); counter = 0; if(counterFall++>35){ wasFallingbefore = true;} } } else { isFalling = false; counter = 0; counterFall=0; animator.SetBool("IsFalling", false); didLandDuringJump = false; if(wasFallingbefore){ wasFallingbefore = false; audioSource.PlayOneShot(landeSound); } } if (charController.grounded && (Mathf.Abs(velocity.y)<0.01f)){ didLandDuringJump = false; } } }