- Home /
!!!URGENT need help with gravity UGENT!!!
Ok Im making a project and I cant seem to make my character to go DOWN when i jump he either starts flying or gets stuck to ground. my script as is is:
 var character: CharacterController;
 var speed: float = 5.0;   // moving speed
 var direction: float = 1; // direction (-1 means -x)
 var directionup: float = 2;
 var directionback: float = -1;
 var runanimation: AnimationClip;
 var placeanimation: AnimationClip;
 var attackanimation: AnimationClip;
 var dieanimation: AnimationClip;
 var idleanimation: AnimationClip;
 var jumpanimation: AnimationClip;
 var jumpSpeed = 8.0;
 var gravity = 20.0;
 private var moveDirection = Vector3.zero;
 
 function Start(){    
         character = transform.GetComponent(CharacterController);
 }
 
 function Update(){
     if(Input.GetKey("d")){
         character.Move(Vector3.forward * speed * direction * Time.deltaTime);
             animation.Play(runanimation.name);
         }
     if(Input.GetKey("a")){
         character.Move(Vector3.forward * speed * directionback * Time.deltaTime);
             animation.Play(runanimation.name);
         }
     if(Input.GetKey("w")){
         character.Move(Vector3.right * speed * directionback * Time.deltaTime);
         }
     if(Input.GetKey("s")){
         character.Move(Vector3.right * speed * direction * Time.deltaTime);
         }
        if(Input.GetMouseButton(1)){
            animation.Play(placeanimation.name);
                    animation.Stop(idleanimation.name);
        }
        if(Input.GetKey("space")){
            character.Move(Vector3.up * speed * direction * Time.deltaTime);
                animation.Play(jumpanimation.name);
        }
        if (Mathf.Abs(Input.GetAxis("Vertical")) <= 0.1){
         animation.CrossFade(idleanimation.name);
     }
     if(Input.GetMouseButton(0)){
             animation.Play(attackanimation.name);
                 animation["attack"].layer = -1;
                     animation.Stop(idleanimation.name);
     }
 }
 function LateUpdate(){
          moveDirection.y -= gravity * Time.deltaTime;
             character.Move(moveDirection * Time.deltaTime);
 }
 its urgent that i get some help soon Thank you everyone
I'm not sure I understand what's going on, and hope that you can give a bit more specific information. You say 'when the character jumps' - I assume that refers to Input.Get$$anonymous$$ey("space")? You say the character either starts flying or gets stuck to the ground - can you explain a little more what you mean by 'flying' (does the character just continue to rise at a s$$anonymous$$dy pace, or hover, or...), and 'stuck to the ground?'
What about other components attached to the character? Any other scripts, rigidbody, character controllers, etc.?
I give you -1 for using URGENT in your subject/title. NO question is more important than anyone elses in here. This forum is about great answers for common problems. If you are so important/urgent, hire on of us to solve it through the normal forum. Thanks.
Dude I said urgent because this is for a college project that was due the next dday
Answer by aldonaletto · Oct 02, 2011 at 06:39 PM
You almost made it! The trick is to make all vertical movement using moveDirection.y. If the character is grounded, zero it. To jump, set y to an appropriate velocity - but only while it's grounded, or else your character will go up like a rocket for the eternity!
 You just need to change the "if (jump)" to get the gravity/jump effects running:
...
function Update(){
    ...
    // modify the if (Input.getKey("space")) to this:
    if (character.isGrounded){ // only check jump if grounded!
        moveDirection.y = 0; // zero vert speed if grounded
        if (Input.GetKey("space")){ // if jump pressed...
            moveDirection.y = jumpSpeed; // set vert speed to jumpSpeed
            animation.Play(jumpanimation.name); // start your jump animation
        }
    }
    ...
 
              You probably also want to change Get$$anonymous$$ey to Get$$anonymous$$eyDown or Get$$anonymous$$eyUp, so it won't fire every frame that the space key is held down; rather, it will fire once when the user either presses or releases space.
Good luck.
I tryed that and when i did it didnt play the animation all the way
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                