# How do I make my speed be positive in any direction?

Hi, I’m making a top down 2d game and I am trying to set up the animations for my game. I currently have a transition from my idle animation to my blend tree for walking. The parameter I am using is speed. It is so when the speed is above 0 it goes to the tree and when it is less than .2 it goes back to the idle state.
The problem is when I walk up the speed goes to one, but when I walk down it goes to -1 and when i go left and right it says at 0. Any help?

Here’s my code

``````using UnityEngine;
using System.Collections;

public class topdown : MonoBehaviour
{

public float moveSpeed;
private Animator anim;

public float speed;

// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
}

// Update is called once per frame
void Update()
{
if (Input.GetAxisRaw("Horizontal") > 0.5f || Input.GetAxisRaw("Horizontal") < 0.5f)
{
transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime, 0f, 0f));
}

if (Input.GetAxisRaw("Vertical") > 0.5f || Input.GetAxisRaw("Vertical") < 0.5f)
{
transform.Translate(new Vector3(0f, Input.GetAxisRaw("Vertical") * moveSpeed * Time.deltaTime, 0f));
}

anim.SetFloat("speed", Input.GetAxisRaw("Horizontal"));
anim.SetFloat("speed", Input.GetAxisRaw("Vertical"));
}
}
``````

float velocity = Mathf.Abs(new Vector2(Input.GetAxis(“Horizontal”), Input.GetAxis(“Vertical”)).magnitude);
anim.SetFloat(“speed”, velocity);

The idea is to create a 2D vector from the Input axes and get the magnitude/length. You then use Abs(); to flip the negative sign to positive.