Question by
darchyneer · Sep 23, 2017 at 06:54 PM ·
rotationcharactercontroller
Character Controller Rotate to turn at a bend
I am trying to make the Character COntroller turn at a bend and also to rotate the player at 20 degrees to the left or right depending on which side you are moving to(strafe from left to right but rotated at angle 20). I just can't figure it out. I am still a noob in c#. I need help people. Here is the script I have at the moment. I also attached what I want looks like.
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 gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
private Animator anim;
public Transform target;
public float RotateSpeed = 5.0f;
// 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;
moveDirection = transform.TransformDirection(moveDirection);
//forward speed while we are on the ground
moveDirection.z = runSpeed;
if(Input.GetMouseButtonDown(0)){
//up speed
moveDirection.y = jumpSpeed;
moveDirection.z = jumpForwardSpeed;
anim.Play("Jump");
}
if(Input.GetKey(KeyCode.Q)){
}
if(Input.GetKey(KeyCode.E)){
}
}
//if we are not on the ground
else {
moveDirection.y -= gravity * Time.deltaTime;
}
moveDirection.x = Input.GetAxisRaw("Horizontal") * sideSpeed;
controller.Move (moveDirection * Time.deltaTime);
float step = RotateSpeed * Time.deltaTime;
transform.rotation = Quaternion.RotateTowards(transform.rotation, target.rotation, step);
turn-right.jpg
(55.6 kB)
capture-3.jpg
(83.7 kB)
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220612135452im_/https://answers.unity.com/themes/thub/images/avi.jpg)