- Home /
How to make a smooth jump?
Using this script when i press Space it teleports up and goes down, how do i make it smoothly jump? here is the c# script:
using UnityEngine; using System.Collections;
public class Demo : MonoBehaviour {
private bool canJump;
public GameObject target;
public int moveSpeed = 8;
public Rigidbody m_Rigidbody;
public int jumpHeight;
// Use this for initialization
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.W)) {
transform.position += (Vector3.left * moveSpeed * Time.deltaTime);
}
if (canJump && Input.GetKey(KeyCode.Space)) {
transform.position += (Vector3.up * jumpHeight * Time.deltaTime);
}
}
void OnTriggerEnter(Collider collision){
Debug.Log("can jump");
canJump = true;
}
void OnTriggerExit(Collider collision){
Debug.Log("can;t jump");
canJump = false;
}
public void die(GameObject destrucionTarget){
Destroy (destrucionTarget);
}
}
Answer by Mark Gossage · Jun 16, 2015 at 06:14 AM
Instead of setting the position, set the velocity of the rigidbody to be up. Then the gravity will make the rigid body fall down.
You will need to check that the player is standing on the ground (a raycast can do this).
You can see a partial example in the unity scripting reference Rigidbody.velocity http://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
Answer by Molehole · Jun 16, 2015 at 06:46 AM
You can use the Unity's rigidbody physics or make your own. It isn't that difficult.
In real world. Objects accelerate in free fall at around 10m/s^2 (9.8 really) this means that objects location at y-axis is:
y = groundLevel + jumpingSpeed * time - 10 * time * time
Your answer
Follow this Question
Related Questions
Help with player script. 1 Answer
My player is able to double jump, any way to make it a single jump? (C#) 0 Answers
The player ball must jump immediately - 1 Answer
Help with adding jump function to player. 2 Answers
I Want My Player To Be Sent Flying In The Air When He Get's Hit By An Enemy 1 Answer