Search Unity

  1. If you have experience with import & exporting custom (.unitypackage) packages, please help complete a survey (open until May 15, 2024).
    Dismiss Notice
  2. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice

Character Controller velocity match separate forward/backwards and left/right move speeds

Discussion in 'Editor & General Support' started by Zebbi, Aug 10, 2019.

  1. Zebbi

    Zebbi

    Joined:
    Jan 17, 2017
    Posts:
    521
    I'm using Unity's character controller for moving my player, and I'm adding the vertical input to a Speed variable for forwards/backwards movement and adding the horizontal input to a Strafe variable for the left/right movement. These are then put into a vector3 that goes to charactercontroller.Move() to make the player move.

    I need to make sure that when CharacterController performs it's colision detection, my Speed and Strafe variables match the read-only CharacterController.velocity value.

    If I get the magnitude of CharacterController.velocity, it *almost* matches my Speed variable (to 4 decimal points) which is close enough, but this only works if I'm using vertical input, otherwise my Strafe speed is factored in and now the magnitude of CharacterController.velocity returns Speed + Strafe.

    Further more, the magnitude of CharacterController.velocity is absolute, so I need to work out if the player is moving backwards or forwards, or left or right.

    I'm not entirely sure how I should be comparing my two movement speed variables to the single CharacterController.velocity vector and somehow matching my two speed variables to it?
     
  2. Zebbi

    Zebbi

    Joined:
    Jan 17, 2017
    Posts:
    521
    So, combining the charactercontroller.velocity.x and charactercontroller.velocity.z magnitude according to https://docs.unity3d.com/ScriptReference/CharacterController-velocity.html allows you to get the forwards speed, I'm not 100% certain if this is including my strafing speed, but I can't figure out at all how to separate the forward speed from the side-to-side speed to match my variables to character controller's internal velocity speeds?