- Home /
how do I script this jump animation?
How do I do this? I can move between idle and walk blahbalh but i can't get the jump animation to work. The character controller is not on the same GameObject as the model (that has the the animation script). How do I check if it is grounded. and if not play the anim??
I am using :
- a character controller
- the character motor
- the platform input controller
Answer by lhk · Oct 29, 2010 at 07:53 PM
The character controller offers a variable isGrounded
var isGrounded : bool Description
Was the CharacterController touching the ground during the last move?
function Update () {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded)
print("We are grounded");
}
This variable should solve your problem. However if you don't want to use the character controller component you may use Physics.Raycast
static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool Parameters origin The starting point of the ray in world coordinates. direction The direction of the ray. distance The length of the ray layerMask A Layer mask that is used to selectively ignore colliders when casting a ray. Returns
bool - True when the ray intersects any collider, otherwise false. Description
Casts a ray against all colliders in the scene.
function Update () {
var fwd = transform.TransformDirection (Vector3.forward);
if (Physics.Raycast (transform.position, fwd, 10)) {
print ("There is something in front of the object!");
}
}
As you can see the layer is an optional parameter. Don't worry about it. By using Physics.Raycast() you can cast a ray down, if something was hit, the function will return true. Just adjust the distance (length of the ray) to your characters size and the return value can be used to see wether you're grounded.
If you are trying to make a real game you should not use a raycast for something as simple as checking if you are on the ground, because raycasting is expensive! The variable isGrounded is perfect for your situation!