- Home /
Question by
darchyneer · Sep 21, 2017 at 12:33 AM ·
charactercontrollerrotation axis
Rotate Character Controller around y -axis
I am making an Endless runner game. The player objects moves forward using " Character COntroller component". Instead of moving left to right on the x-axis while running forward in z -axis, I want the controller to rotate so that the Controller can move into bends just like we have in racing games Please check the pix I attached for visualization of how i want it to move. Thanks in advance.public class PlayerBehaviour : MonoBehaviour {
private CharacterController controller;
public float runSpeed = 10.0f;
public float jumpSpeed = 8.0f;
public float sideSpeed = 10.0f;
public float jumpForwardSpeed = 8.0f;
public float rotSpeed = 2.0f;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
private Animator anim;
// Use this for initialization
void Start () {
anim = GetComponent<Animator>();
controller = GetComponent<CharacterController>();
}
// Update is called once per frame
void Update () {
//if we are on the ground
if(controller.isGrounded){
moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"),0,0) * sideSpeed;
//transform.Rotate(moveDirection * rotSpeed * Time.deltaTime);
//transform.Rotate(moveDirection = new Vector3(Input.GetAxisRaw("Horizontal"),0,0) * rotSpeed * Time.deltaTime);
moveDirection = transform.TransformDirection(moveDirection);
//forward speed
moveDirection.z = runSpeed;
if(Input.GetMouseButtonDown(0)){
//up speed
moveDirection.y = jumpSpeed;
moveDirection.z = jumpForwardSpeed;
anim.Play("Jump");
}
}
//if we are not on the ground
else {
moveDirection.x = Input.GetAxisRaw("Horizontal") * sideSpeed;
moveDirection.y -= gravity * Time.deltaTime;
}
controller.Move (moveDirection * Time.deltaTime);
}
[1]: /storage/temp/102283-schematics.png
schematics.png
(18.7 kB)
Comment
Your answer
