I have a terrain which I can walk on, and I have a few boxes around and platforms to test my |FPS characters motion skills. When I run into a box or platform from the side, I collide with it, like I should, but when I jump ontop of the box or platform, i immediately teleport back to the ground. Any ideas on how to fix this? Here is the motion portion of my controller.
function FixedUpdate() {
if (grounded) {
// We are grounded, so recalculate movedirection directly from axes.
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
//left shift changes speed to sprintspeed.
if (Input.GetButton ("left shift")) {
moveDirection *= sprintspeed;
}
//left control changes speed to crouchspeed and modifies scale and position to a smaller size to crouch.
else if (Input.GetButton ("left ctrl")) {
moveDirection *= crouchspeed;
gameObject.transform.localScale.y -= .5;
gameObject.transform.position.y = .5;
}
else
{
//if anything else, speed is normal speed and make scale and position standing
moveDirection *= speed;
gameObject.transform.localScale.y = 1;
gameObject.transform.position.y = 1;
}
//if jump is pressed, jump.
if (Input.GetButton ("Jump")) {
moveDirection.y = jumpSpeed;
}
}