So I have that script and it’s not mine , I use it but I want when I play on my tablet to control player left right with Accelerometer…
That’s the script, it work with keypad buttons…
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MoveTheCube : MonoBehaviour
{
public float rotationPeriod = 0.3f;
private float sideLength = 1f;
bool isRotate = false;
float directionX = 0;
float directionZ = 0;
Vector3 startPos;
float rotationTime = 0;
float radius;
Quaternion fromRotation;
Quaternion toRotation;
private Vector3 m_startPosition;
public float maxDistance = 4f;
// Use this for initialization
void Start()
{
m_startPosition = transform.position;
radius = sideLength * Mathf.Sqrt(2f) / 2f;
}
// Update is called once per frame
void Update()
{
float y = 0;
y = Input.GetAxisRaw("Horizontal")*-1;
if (CheckLimits(y) && (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;
}
}
bool CheckLimits(float y)
{
if (transform.position.x - m_startPosition.x > maxDistance - 1)
{
if (y > 0)
return true;
else
return false;
}
else if (transform.position.x - m_startPosition.x < -maxDistance + 1)
{
if (y < 0)
return true;
else
return false;
}
else
return 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;
}
}
}
}