- Home /
Question by
PauloPatez · Sep 26, 2011 at 02:40 PM ·
controllergravity
Apply gravity
I'm trying to apply gravity to this Character Controller, but it is not working, what is wrong in this script?
var speed = -1;
private var moveLeft = true;
private var moveRight = false;
var toLeftSpeed = -1;
var toRightSpeed = 1;
private var savedSpeedValue = 0;
var iddleTime = 1;
var gravity : float = 20.0;
function OnTriggerEnter(collision : Collider) {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
if (collision.gameObject.tag == "obst") {
savedSpeedValue = speed;
isIddle = true;
speed = 0;
yield WaitForSeconds (iddleTime);
if (savedSpeedValue == toLeftSpeed) {
speed = toRightSpeed;
} else {
speed = toLeftSpeed;
}
}
}
}
function Update() {
moveDirection = Vector3(speed, 0, 0);
var controller : CharacterController = GetComponent(CharacterController);
controller.Move(moveDirection * Time.deltaTime);
moveDirection = Vector3(0, gravity, 0);
transform.TransformDirection(moveDirection);
}
Comment
Please edit your post and format your code using the 10101010 buttons, otherwise people are not going to read your post.
Best Answer
Answer by PauloPatez · Sep 26, 2011 at 07:43 PM
I found the solution. Here is:
function Update() {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
moveDirection = Vector3(speed, 0, 0);
controller.Move(moveDirection * Time.deltaTime);
}
var gravityForce = Vector3(0, gravity, 0);
controller.Move(gravityForce * Time.deltaTime);
}
Answer by Ludiares.du · Sep 26, 2011 at 05:02 PM
You're just setting the move direction, but not setting anywhere the CharacterController.Move function