Going insane from this

So for the past few hours I’ve been trying to make a simple “dash”. I have left and right buttons set up and everything but just can’t make simple script that would move the character for a certain units to the left or right when the screen is tapped.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour {
	//variables
	public float moveSpeed = 300;
	public GameObject character;

	private Rigidbody2D characterBody;
	private float ScreenWidth;


	// Use this for initialization
	void Start () {
		ScreenWidth = Screen.width;
		characterBody = character.GetComponent<Rigidbody2D>();
	}
	
	// Update is called once per frame
	void Update () {
		int i = 0;
		//loop over every touch found
		while (i < Input.touchCount) {
			if (Input.GetTouch (i).position.x > ScreenWidth / 2) {
				//move right
				RunCharacter (1.0f);
			}
			if (Input.GetTouch (i).position.x < ScreenWidth / 2) {
				//move left
				RunCharacter (-1.0f);
			}
			++i;
		}
	}
	void FixedUpdate(){
		#if UNITY_EDITOR
		RunCharacter(Input.GetAxis("Horizontal"));
		#endif
	}

	private void RunCharacter(float horizontalInput){
		//move player
		characterBody.AddForce(new Vector2(horizontalInput * moveSpeed * Time.deltaTime, 0));

	}
}

I’ve been trying to use this one but I jsut can’t make it work as I want it to, it’s movement is working fine, but I do not want it to slide from side to side but to dash for a given amount of units. I’ve tried using transform, velocity, etc… but I just can’t. Any help?

Since I don’t have any configuration details on characterBody, I’m going to assume that a force of about 300 is quite sufficient to quickly move the object.

However, you’re applying a very small fraction of that force when you use Time.deltaTime here. You use Time.deltaTime when what you have is rate of speed, you’re controlling something more directly (as in changing positions or rotation angle), and you need to move portions of time on each update.

You’re not doing that. You’re applying force, and should let the physics engine do what it will with the force over time - let the physics engine handle time when you apply forces.

Remove the Time.deltaTime and see what happens. After that, adjust your speed member, which in reality isn’t speed but force. Speed is calculated by the physics engine based on how much force is applied to an object of a particular mass for a given length of time.