Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

Question Blend Tree Head of Player Character keeps tilting horizontaly.

Discussion in 'Animation' started by Alexdbz, Mar 11, 2023.

  1. Alexdbz

    Alexdbz

    Joined:
    Dec 5, 2022
    Posts:
    4
    I can't seem to find a way to resolve this issue, when I am moving my character just the head moves it looks weird
    I made a video to make it clear what I am trying to say.

    also here are my animation and movement scripts hope it helps In order not to make this too long I will just copy my movement script, rotation, and Animator methods hope It helps. I am using Unity event movement system.

    public void Move() // Move is then updated in void FixedUpdate() // Just didnt want to copy here // Players RigidBody is in Void Awake()
    {
    float speedMultiplier = isRunning ? 2.0f : 1.0f; // Set speed based on running state
    if (Keyboard.current.leftShiftKey.isPressed)
    {
    speedMultiplier *= 0.5f;

    }
    float speed = movementSpeed * speedMultiplier;


    Vector3 movementDelta = new Vector3(inputVector.x, 0, inputVector.y) * movementSpeed * speed * Time.deltaTime;
    PlayerRb.MovePosition(transform.position + movementDelta);


    for Player rotation using RigidBody its this. //This is also updated in void FixedUpdate()

    private void Rotate()
    {
    if (inputVector.magnitude > 0)
    {

    Vector3 direction = new Vector3(inputVector.x, 0, inputVector.y);
    Quaternion targetRotation = Quaternion.LookRotation(direction);


    transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, Time.deltaTime * 1000);
    }
    }
    }
    and this is for Animator
    public void Update()
    {

    UpdateAnimatorVelocity();

    }

    private void UpdateAnimatorVelocity()
    {
    float velocity = animator.GetFloat("Velocity");


    if (playerControlls.inputVector.magnitude > 0)
    {
    velocity = 0.5f;
    if (Keyboard.current.leftShiftKey.isPressed)
    {
    velocity = 1f;
    }
    }
    else
    {
    velocity = 0f;
    }
    animator.SetFloat("Velocity", velocity);
    }
    }