- Home /
Question by
made9 · Feb 14, 2014 at 12:37 AM ·
charactercharactercontrollerjumpjumping
I cant make my Character jump.
I already tried a lot of different ways to do this, and my character never jumps... Im using a character controller.
Heres my script: #pragma strict
//Vars
var WalkSpeed : int = 7;
var Gravity : int = 20;
var RotationSpeed : int = 5;
var JumpHeight : int = 8;
private var yRot : float;
private var moveDirection : Vector3 = Vector3.zero;
function Update () {
var Controller : CharacterController = GetComponent(CharacterController);
var vertical : Vector3 = transform.TransformDirection(Vector3.forward);
var horizontal : Vector3 = transform.TransformDirection(Vector3.right);
var height : Vector3 = transform.TransformDirection(Vector3.up);
if(Input.GetAxis("Vertical")){
Controller.Move((vertical * (WalkSpeed * Input.GetAxis("Vertical")))* Time.deltaTime);
Controller.Move((horizontal * (WalkSpeed * Input.GetAxis("Horizontal")))* Time.deltaTime);
}
if(Input.GetAxis("Horizontal")){
yRot += RotationSpeed * Input.GetAxis("Horizontal");
transform.rotation = Quaternion.Euler(0, yRot,0);
Controller.Move((horizontal * (WalkSpeed * Input.GetAxis("Horizontal")))* Time.deltaTime);
}
if (Input.GetButton ("Jump")) {
if(Controller.isGrounded){
moveDirection.y= JumpHeight;
}
}
Controller.Move(height * - Gravity * 10 *Time.deltaTime);
}
well guys, i've made a new script and it works, thanks for the help anyway:
var jumpSpeed : float = 8;
var gravity : float = 20;
var turnSpeed : float = 90.0;
private var moveDirection : Vector3 = Vector3.zero;
function Start () {
}
function Update () {
var controller : CharacterController = GetComponent(CharacterController);
if(controller.isGrounded)
{
moveDirection = Vector3(0, 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
var turnAngle : float = turnSpeed * Input.GetAxis("Horizontal") * Time.deltaTime;
transform.Rotate (0, turnAngle, 0);
if(Input.GetButton("Jump")){
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
Comment
For a quick bit of optimization, you want to move those top 4 assignments out of update (otherwise it's having to go through that every frame). Add a Start() function and move that there.
Your answer
Follow this Question
Related Questions
How do I fix my player jumping code? 2 Answers
Still constant jumping even with raycasting. 0 Answers
Problems with jumping script 1 Answer
Character jump too fast 1 Answer
[C#] Jump on slopes 1 Answer