So I am currently developing a parkour system for my game. I have used the Unity default First Person Controller for almost a year now, and I recently realized that I had to make my own character controlling system for my parkour system. Basically, I am using a Character Controller to do this. Here is the code that I am using:
var speed : float = 6.0;
var jumpSpeed : float = 100.0;
var gravity : float = 25.0;
private var moveDirection : Vector3 = Vector3.zero;
function PlayerController(){
var controller : CharacterController = GetComponent(CharacterController);
moveDirection = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (controller.isGrounded) {
if (Input.GetButtonDown ("Jump")) {
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
Now this works fine in terms of moving, but for jumping, not so much. I want my game to have somewhat realistic gravity, so I turned it up in the Unity Editor to 125. This makes a pretty realistic gravity effect, but the jumping screws up then. Basically, I would have to put the jumpSpeed to like 100 for the character to actually move up, and when it does it almost teleports up and then falls down. What I need is a good jumping fade, like the First Person Controller that Unity comes with.
Any help is appreciated,
- william9518