fixed the problem

problem fixed

Well would create a GUITexture. And then use something like this

var myButton : GUITexture = GetComponent(GUITexture); //Only if the script is attached to the GUITexture otherwise you’ll have to assign it differently

function Update()
{

if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began && myButton.HitTest(Input.GetTouch(0).position))
{
// do stuff to accelerate
//maybe something like this:
Accelerate();
}

if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended && myButton.HitTest(Input.GetTouch(0).position))
{
// do stuff to decelerate
//maybe something like this:
Decelerate()
}
}

function Accelerate()
{
input = Mathf.Lerp(input, maxInput, Time.deltaTime); //you would need to assign all those variables
}

function Decelerate()
{
input = Mathf.Lerp(input, 0, Time.deltaTime); //I’m not sure on this line
}

So I didn’t try out the code but this should be what you need.

//you need two round texture one for boundary are which is bigger then 2nd texture which will //be touch and drag for controlling

public class JoyStick : MonoBehaviour {

public Texture areaTexture;
public Texture touchTexture;
public Vector2 joystickPosition = new Vector2( 135f,135f);
public Vector2 speed = new Vector2(2,100);
public float zoneRadius=100f;
public float touchSize = 30;
public float deadZone=20;
public float touchSizeCoef=0;
protected Vector2 joystickAxis;
protected Vector2 joystickValue;
public Vector2 joyTouch;
private Vector2 _joystickCenter;
[SerializeField]
private Vector2 _smoothing = new Vector2(20f,20f);
public Vector2 Smoothing {
	get {
		return this._smoothing;
	}
	set {
		_smoothing = value;
		if (_smoothing.x<0.1f){
			_smoothing.x=0.1f;
		}
		if (_smoothing.y<0.1){
			_smoothing.y=0.1f;	
		}
	}
}
private int _joystickIndex=-1;
private bool _enaReset;
private bool _enaZoom;

void Start () {
	_joystickCenter = joystickPosition;
	_enaReset=false;
}

// Update is called once per frame
void Update () {
		if (Application.platform == RuntimePlatform.IPhonePlayer || Application.platform == RuntimePlatform.Android) {
		foreach (Touch touch in Input.touches)
		{
			if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled) {
				if (_joystickIndex==touch.fingerId){
					_joystickIndex=-1;
					_enaReset=true;
				}
			}
			
			if(_joystickIndex==touch.fingerId){
				OnTouchDown(touch.position);
			}
			if (touch.phase == TouchPhase.Began) {
				if (((Vector2)touch.position - _joystickCenter).sqrMagnitude < Mathf.Pow((zoneRadius+touchSizeCoef/2),2)){
					_joystickIndex = touch.fingerId;
				}
			}
		}
		
		UpdateJoystick();
		if(_enaReset){
			ResetJoystick();
		}
	}else{ 
		if (Input.GetButtonUp ("Fire1")) {
			_joystickIndex=-1;
			_enaReset=true;
		}
		if(_joystickIndex==1){
			OnTouchDown(Input.mousePosition);
		}
	    if (Input.GetButtonDown ("Fire1") ) {
			if (((Vector2)Input.mousePosition - _joystickCenter).sqrMagnitude <Mathf.Pow( (zoneRadius+touchSizeCoef/2),2)){
				_joystickIndex = 1;
				
			}
			
		}
		if(_enaReset){
			ResetJoystick();
		}
		
		UpdateJoystick();
	
	}
	
}




private void UpdateJoystick(){ 
		if (joyTouch.sqrMagnitude>deadZone*deadZone){
			
			joystickAxis = Vector2.zero;
		if (Mathf.Abs(joyTouch.x)> deadZone){
				joystickAxis = new Vector2( (joyTouch.x -(deadZone*Mathf.Sign(joyTouch.x)))/(zoneRadius-touchSizeCoef-deadZone),joystickAxis.y);
				
			}else{
				joystickAxis = new Vector2( joyTouch.x /(zoneRadius-touchSizeCoef),joystickAxis.y);
			
			}
		if (Mathf.Abs(joyTouch.y)> deadZone){

				joystickAxis = new Vector2( joystickAxis.x,(joyTouch.y-(deadZone*Mathf.Sign(joyTouch.y)))/(zoneRadius-touchSizeCoef-deadZone));
			}else{
			
				joystickAxis = new Vector2( joystickAxis.x,joyTouch.y/(zoneRadius-touchSizeCoef));	
			}
		
		}
		else{
			joystickAxis = new Vector2(0,0);
		}
	Vector2 realvalue = new Vector2(  speed.x*joystickAxis.x,speed.y*joystickAxis.y);
	joystickValue=realvalue;
	print(realvalue);

}

// Joystick move
void OnTouchDown(Vector2 position){
		joyTouch  = new Vector2( position.x, position.y) - _joystickCenter;
		if ((joyTouch/(zoneRadius-touchSizeCoef)).sqrMagnitude > 1){
			joyTouch.Normalize();
			joyTouch *= zoneRadius-touchSizeCoef;
		}
	//print(joyTouch);
}


private void ResetJoystick(){
	if (joyTouch.sqrMagnitude>0.1){
		joyTouch = new Vector2( joyTouch.x - joyTouch.x*_smoothing.x*Time.deltaTime, joyTouch.y - joyTouch.y*_smoothing.y*Time.deltaTime);	
	}
	else{
		joyTouch = Vector2.zero;
		_enaReset=false;
	}
}
void OnGUI(){
		GUI.DrawTexture( new Rect(_joystickCenter.x -zoneRadius ,Screen.height- _joystickCenter.y-zoneRadius,zoneRadius*2,zoneRadius*2), areaTexture,ScaleMode.ScaleToFit,true);
		GUI.DrawTexture( new Rect(_joystickCenter.x+(joyTouch.x -touchSize) ,Screen.height-_joystickCenter.y-(joyTouch.y+touchSize),touchSize*2,touchSize*2), touchTexture,ScaleMode.ScaleToFit,true);
}

}