Joystick issues

Hi, I’ve found a nice script here - http://www.joshuagamedev.com/on-screen-joystick-test/ and it’s throwing me an error that I can’t seem to fix :frowning: Can anyone help?

Thanks in advance

      // input variables
         public var baseTexture:Texture;// the base
 texture, usually the touchable area.
         public var joystickTexture:Texture ;// joystick
 texture, nothing but visual
 representation.
         public var touchArea:Rect;// the limits and size of touch action
 area.
         public var circleRadius:float;//joystick limit
 radius, it cannot move beyond this.
         public var invertY:boolean;// inverts the vertical output.
     
     //output variables | gives values from -1 to 1.
     static public var horizontal:float;
     static public var vertical:float;
     //calculation variables
     private var joystick:Rect;
     private var cursorPosition:Vector2;//x,y position
 of cursor/touch
     private var touchAreaCenter:Vector2;//stores the
 center of the touchable area.
     private var cursorDifference:Vector2;//the
 difference from cursor to center of
 touchable area.
     private var cursorDistance:float;//the distance
 from cursor and the center of
 touchable area.
     private var joystickPosition:Vector2;//position of
 the joystick.
     
     function Start()
     {
         // sets the touch area size to texture size if none is given.
         if ((touchArea.width || touchArea.height) == 0)
         {
             touchArea.width = baseTexture.width;
             touchArea.height = baseTexture.height;
     
             joystick.width = joystickTexture.width;
             joystick.height = joystickTexture.height;
         }
     
         touchArea.y = Screen.height - touchArea.height;// aligns the
 touchable area to bottom left.
         touchAreaCenter = Vector2(touchArea.x + touchArea.width
 / 2, touchArea.y + touchArea.height /
 2);
     }
     
     function Update ()
     {
         // screen space starts from bottom left.
         cursorPosition = ScreenToGUIPoint(Input.mousePosition);//
 converts screen space to GUI space.
     
         cursorDifference = cursorPosition - touchAreaCenter;
         cursorDistance = cursorDifference.magnitude;
     
         joystickPosition = Vector2(joystick.x, joystick.y);
     
         // if a touch is detected then execute else reset joystick to center
 of touch area
         if (Input.GetMouseButton(0) && touchArea.Contains(cursorPosition))
         {
             // if the cursor is outside the circle radius, joystick is
 locked at the circle's circumference.
             if (cursorDistance  circleRadius)
             {
                 joystickPosition = touchAreaCenter + (cursorDifference /
 cursorDistance) * circleRadius;
                 joystick.x = joystickPosition.x - joystick.width / 2;
                 joystick.y = joystickPosition.y - joystick.height / 2;
             }
             else
             {
                 joystickPosition = cursorPosition;
                 joystick.x = cursorPosition.x - joystick.width / 2;
                 joystick.y = cursorPosition.y - joystick.height / 2;
             }   
             // converts the position of joystick(-1 to 1) using the circle
 circumference as limits and not the
 limits of toucharea.
             horizontal  = Interpolate(joystickPosition.x,
 touchAreaCenter.x - circleRadius,
 touchAreaCenter.x + circleRadius, -1, 1);
             vertical    = Interpolate(joystickPosition.y,
 touchAreaCenter.y + circleRadius,
 touchAreaCenter.y - circleRadius,
 invertY?1:-1, invertY?-1:1);
         }
         else
         {
             joystick.x = touchAreaCenter.x - joystick.width /
 2;
             joystick.y = touchAreaCenter.y - joystick.width /
 2;
             horizontal = vertical = 0;
         }
     }
     
     function OnGUI()
     {
         GUI.DrawTexture(touchArea, baseTexture, ScaleMode.ScaleAndCrop,
 true);
         GUI.DrawTexture(joystick, joystickTexture,
 ScaleMode.ScaleAndCrop, true);
     }
     
     function ScreenToGUIPoint(input:Vector2):Vector2
     {
         return Vector2(input.x, Interpolate(input.y, Screen.height, 0,
 0, Screen.height));
     }
     
     private function Interpolate(xVar, xMin, xMax, yMin, yMax):float
     {
         return ( (xVar - xMin) / (xMax - xMin) ) * (yMax - yMin) + yMin;
     }

**^ It's the last section here** 

Assets/OnScreenJoystick.js
Operator ‘-’ cannot be used with a left hand side of type ‘Object’ and a right hand side of type ‘Object’.

This error message indicates that you’re trying to subtract two variables of unknown type (which the compiler calls object - not the same as Object, an Unity base class). The Interpolate function declaration doesn’t define the parameter types, what probably is causing this error. Change it like this:

    private function Interpolate(xVar:float, xMin:float, xMax:float, yMin:float, yMax:float):float
     {
         return ( (xVar - xMin) / (xMax - xMin) ) * (yMax - yMin) + yMin;
     }

can I ask you some question @gamefreak…because my joystick is not moving and i use the script of penelope and follow the step you gave in your comments…do you have any idea why i can’t move the joystick…pls …help me dude…