I'm writing my own character controller that uses a rigidbody. I'm getting stuck on something weird. This is my code (variable declarations not included):
void Start() {
myNormal = transform.up;
rigidbody.freezeRotation = true;
// Distance between center of Character Position and the Ground
var collider = gameObject.collider as CapsuleCollider;
distGround = collider.bounds.extents.y - collider.center.y;
}
void FixedUpdate() {
// Appliy Gravity
rigidbody.AddForce(-1 * gravity * this.rigidbody.mass * myNormal);
}
void Update() {
transform.Translate(Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime, 0, Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime);
transform.Rotate(0, Input.GetAxis("Mouse X") * turnSpeed * Time.deltaTime, 0);
camera.transform.Rotate(-1 * Input.GetAxis("Mouse Y") * turnSpeed * Time.deltaTime, 0, 0);
}
The update function handles the character translation and rotation. For vertical rotation (looking up and down) only the camera rotates. This is because I plan on using some weird gravity effects latter on and need the character to stay vertical with the floor.
My problem with this script so far is that I can move the character position with WASD, and look around with the Mouse, but I can't do both at the same time.
While my character is moving, the rotation is frozen. How can I fix this?
↧