- Home /
Detect Falling
Hi, I am currently working on a character that is jumping and managed to make the animations play when it is jumping, but the problem is that now I would like to detect when the character is falling so that the animation can change in time. Is there anyway to detect if it is moving "negatively" on Y or something like that?
Jumping Code:
 public Animator Runner_Controller;
 
     private bool touchingPlatform;
     private Vector3 startPosition;
     
     void Start () {
         GameEventManager.GameStart += GameStart;
         GameEventManager.GameOver += GameOver;
         GameEventManager.GameWin += GameWin;
         startPosition = transform.localPosition;
         gameObject.SetActive(false);
         Runner_Controller.SetBool("Jumping",false);
     }
 
 
     void Update () {
         if(Input.GetButtonDown("Jump")){
             if(touchingPlatform){
                 rigidbody.AddForce(jumpVelocity, ForceMode.VelocityChange);
                 Runner_Controller.SetBool("Jumping",true);
                 touchingPlatform = false;
             }
You can check if rigidbody.velocity.y < 0.0. You might have to put a bit of a buffer in there...check if it is less than -0.1 for example.
you can check the velocity indeed but don't forget to check if you're grounded or not ^^. because if you're in a slope the velocity will be the same kind a value than during a falling.
Answer by L_Artista · Jan 06, 2016 at 09:25 AM
 void LateUpdate{
 currentheight = transform.position.y
  
 travel = currentheight - previousheight
 //your code
 previousheight = currentheight
 }
 //if you are using rigidbody use lateupdate else if Update if your directly changing transform.position
Thanks, I used something like this a long time ago, thanks for replying.
Answer by KungKras · Jan 07, 2016 at 01:02 PM
It's a good idea to raycast down in an 'IsGrounded()' function. Then when IsGrounded() returns false, you can play the falling animation. Just checking the y-velocity could be misleading if you're gonna move down slopes.
Answer by ForeignGod · Jan 06, 2016 at 10:56 AM
First off, i don't use C# so this might be correctly coded, but in theory this idea should work. This is written here and now and isn't tested at all, just to get you thinking.
     using UnityEngine;
     using System.Collections;
     
     public class MYCLASSNAME : MonoBehaviour {
        velY : Float;
        falling : Boolean;
     
     void  Start (){
        velY = rigidbody.velocity.y;
     }
     
     void  Update (){
        if(velY >= 0){
           falling = true;
     }
        if(velY == 0){
           falling = false;
     }
 }
Your answer
 
 
             Follow this Question
Related Questions
Adding Jumping and Falling Animations 0 Answers
fall animation triggered via rigidbody velocity 0 Answers
How would you go about making falling leaves? 1 Answer
Another Slow Fall Problem... 2 Answers
Sword animation when falling 2 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                