Mobile input is not working ...

Hello guys i have a problem in my script i am making a cube rolling with arrow keys in unity …but when i change it in drag system (mobile input or click drag) it is not working …i want it to drag in X and Y axis …i am not familiar with unity…check out my error part…

void Update () {

 float x = 0;
 float y = 0;
 
 
 x = Input.GetAxisRaw ("Horizontal");
 if (x == 0) {
     y = Input.GetAxisRaw ("Vertical");
 }


 if ((x != 0 || y != 0) && !isRotate) {
     directionX = y;                                                                
     directionZ = x;                                                                
     startPos = transform.position;                                                
     fromRotation = transform.rotation;                                            
     transform.Rotate (directionZ * 90, 0, directionX * 90, Space.World);    
     toRotation = transform.rotation;                                            
     transform.rotation = fromRotation;                                            
     rotationTime = 0;                                                            
     isRotate = true;                                                            
 }

}

Check my mistake plzz …

@NoDumbQuestion

@Bunny83

Follow these steps to get the exact issue.

  1. Use Log to check if both “Input.GetAxisRaw (“Horizontal”);” and “Input.GetAxisRaw (“Vertical”);” always gives you “0”.

  2. On a mobile device, tilting your phone changes these values. On the editor, the arrow keys changes the values.

  3. If both are zero, try and use “Input.acceleration.x” instead of “Input.GetAxisRaw (“Horizontal”);” and “Input.acceleration.y” instead of “Input.GetAxisRaw (“Vertical”);”. Note if it works.

I hope you are changing the value of “isRotate” at some point after setting it to “true”. Otherwise you wouldn’t be able to see any changes, as the values are applied only once.

I have added the full code. You can modify it as you want.

using UnityEngine;

using System.Collections;

using System;

public class CubeController : MonoBehaviour {

public float rotationPeriod = 0.3f;
public float sideLength = 1f;

bool isRotate = false;
float directionX = 0;
float directionZ = 0;

Vector3 startPos;
float rotationTime = 0;
float radius;
Quaternion fromRotation;
Quaternion toRotation;

float x,y;
public float minSwipeDistY = 1;
public float minSwipeDistX = 1;
private Vector3 touchStartPos;

// Use this for initialization
void Start()
{

    radius = sideLength * Mathf.Sqrt(2f) / 2f;

}

// Update is called once per frame
void Update()
{
	#if UNITY_EDITOR || UNITY_STANDALONE
    x = Input.GetAxisRaw("Horizontal");
    if (x == 0)
    {
        y = Input.GetAxisRaw("Vertical");
    }
	#else
	DetectSwipe();
	#endif

    if ((x != 0 || y != 0) && !isRotate)
    {
        directionX = y;
        directionZ = x;
        startPos = transform.position;
        fromRotation = transform.rotation;
        transform.Rotate(directionZ * 90, 0, directionX * 90, Space.World);

        toRotation = transform.rotation;
        transform.rotation = fromRotation;
        rotationTime = 0;
        isRotate = true;
    }
}

void FixedUpdate()
{

    if (isRotate)
    {

        rotationTime += Time.fixedDeltaTime;
        float ratio = Mathf.Lerp(0, 1, rotationTime / rotationPeriod);

        float thetaRad = Mathf.Lerp(0, Mathf.PI / 2f, ratio);
        float distanceX = -directionX * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));

        float distanceY = radius * (Mathf.Sin(45f * Mathf.Deg2Rad + thetaRad) - Mathf.Sin(45f * Mathf.Deg2Rad));

        float distanceZ = directionZ * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));
        transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);

        transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio);

        if (ratio == 1)
        {
            isRotate = false;
            directionX = 0;
            directionZ = 0;
            rotationTime = 0;
        }
    }
}

void DetectSwipe()
{
	x = y = 0;
	if (Input.touchCount > 0) 
	{
		Touch touch = Input.touches[0];

		switch (touch.phase)
		{
		case TouchPhase.Began:
			touchStartPos = touch.position;
			break;

		case TouchPhase.Ended:
			float swipeDistVertical = (new Vector3(0, touch.position.y, 0) - new Vector3(0, touchStartPos.y, 0)).magnitude;
			if (swipeDistVertical > minSwipeDistY)
			{
				float swipeValue = Mathf.Sign(touch.position.y - touchStartPos.y);
				y = swipeValue;
				/*if (swipeValue > 0)//up swipe
					Jump ();
				else if (swipeValue < 0)//down swipe
					Shrink ();*/
			}

			float swipeDistHorizontal = (new Vector3(touch.position.x,0, 0) - new Vector3(touchStartPos.x, 0, 0)).magnitude;

			if (swipeDistHorizontal > minSwipeDistX)
			{
				float swipeValue = Mathf.Sign(touch.position.x - touchStartPos.x);
				x = swipeValue;
				/*if (swipeValue > 0)//right swipe
					MoveRight ();
				else if (swipeValue < 0)//left swipe
					MoveLeft ();*/
			}
			break;
		}
	}
}

}