- Home /
Converting Input.getAxis("Horizontal") to touch screen input.
New to Unity. I've made a fairly simple movement script that involves moving left and right with the arrow keys and allowing you to jump if both left and right are pressed at the same time. Here is that script.
public Rigidbody rb;
public float vel;
public float jumpForce;
public bool canMove; //If there's a countdown or the character needs to be unable to move for whatever reason
public bool isGrounded;
private Vector3 rayStart;
private float rayDist = 0.025f;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
canMove = true;
vel = 10f;
jumpForce = 7f;
}
// Update is called once per frame
void FixedUpdate()
{
float x = Input.GetAxis("Horizontal");//raw or smooth, decide later
//float y = Input.GetAxis("Vertical");
Vector2 direction = new Vector2(x, y);
Walk(direction);
rayStart = new Vector3(transform.position.x, transform.position.y + 0.01f, transform.position.z);
//Debug.DrawRay(rayStart, Vector3.down * rayDist, Color.red, 10);
if (Physics.Raycast(rayStart, Vector3.down, rayDist))
{
//Debug.Log("floor: hit");
isGrounded = true;
}
else
{
isGrounded = false;
}
if (isGrounded)
{
if (Input.GetKey("left") && Input.GetKey("right"))
{
rb.velocity = new Vector2(direction.x * vel, jumpForce);
}
}
}
private void Walk(Vector2 dir)
{
if (!canMove)
{
return;
}
rb.velocity = new Vector2(dir.x * vel, rb.velocity.y);
//rb.AddForce(dir, ForceMode.Impulse);
}
}
I'm now trying to convert this movement to touch screen input. In essence, if the player taps the rightmost side of their screen, it should do the same as if they pressed the right arrow key. Same goes for the left side of the screen, except with the left arrow key. I've looked up solutions online, but nothing produces the same smooth movement that I get with Input.getAxis, the solutions I've found feel more like Input.getAxisRaw, which is not the feel I'd like to have, if possible.
Any help is appreciated!
Your answer
Follow this Question
Related Questions
Input.GetAxis not returning 0 when keyboard is idle 1 Answer
`Input' does not contain a definition for `GetAxis' 2 Answers
Input.GetAxis("Vertical") on touch devices. 2 Answers
Is it possible to work around Input.getAxis always returning 0 after scene loads? 4 Answers
Input Movement differs with Neg/Pos & AltNeg/AltPos 0 Answers