3D Virtual Joystick for cube

Hey guys. I’m trying to make a cube move around with a 3d virtual joystick

I’ve been following this tutorial, but when i replace the sphere with a cube it doesnt move or work at all.

Here are the link:

And here are the scripts:

Virtual Joystick Script

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;

public class VirtualJoystick : MonoBehaviour, IDragHandler, IPointerUpHandler, IPointerDownHandler
{

    private Image bgImg;
    private Image joystickImg;
    private Vector3 inputVector;

    private void Start()
    {
        bgImg = GetComponent<Image>();
        joystickImg = transform.GetChild(0).GetComponent<Image>();
    }

    public virtual void OnDrag(PointerEventData ped)
    {
        Vector2 pos;
        if (RectTransformUtility.ScreenPointToLocalPointInRectangle(bgImg.rectTransform, ped.position, ped.pressEventCamera, out pos))
        {
            pos.x = (pos.x / bgImg.rectTransform.sizeDelta.x);
            pos.y = (pos.y / bgImg.rectTransform.sizeDelta.x);

            inputVector = new Vector3(pos.x * 2 + 1, 0, pos.y * 2 - 1);
            inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;

            // Move joystickImg
            joystickImg.rectTransform.anchoredPosition =
                new Vector3(inputVector.x * bgImg.rectTransform.sizeDelta.x / 3
                    , inputVector.z * (bgImg.rectTransform.sizeDelta.y / 3));

        }
    }

    public virtual void OnPointerDown(PointerEventData ped)
    {
        OnDrag(ped);
    }

    public virtual void OnPointerUp(PointerEventData ped)
    {
        inputVector = Vector3.zero;
        joystickImg.rectTransform.anchoredPosition = Vector3.zero;
    }

    public float Horizontal()
    {
        if (inputVector.x != 0)
            return inputVector.x;
        else
            return Input.GetAxis("Horizontal");
    }

    public float Vertical()
    {
        if (inputVector.x != 0)
            return inputVector.z;
        else
            return Input.GetAxis("Vertical");
    }
}

Move script

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

public class Move : MonoBehaviour
{
    public float moveSpeed = 20f;
    public VirtualJoystick moveJoystick;

    private void Update()
    {
        Vector3 dir = Vector3.zero;

        dir.x = moveJoystick.Horizontal();
        dir.z = moveJoystick.Vertical();

        GetComponent<Rigidbody>().AddForce(dir * moveSpeed);
    }

}

Daym, same problem, I tried that tutorial and figured out that a cube can’t roll :smile: