I have a 3d game in which the object is controlled by the Gyro on iPad. Object is set to move on x and y axis ONLY. I added a slight rotation to the objects movement to make the movements feel less mechanical. So the object tilts slightly in the direction that its moving. I have run in to 2 issues. I am not able to limit the amount of rotation of the object. Also the objects rotates too slowly.
How do I limit the amount of rotation and how do I get the object to respond faster during rotation. Heres the code that controls rotation:
After a little experimentation I was able to get the speed of the rotation to respond quicker. Now if I can figure out how to properly clamp the rotation I’ll be golden. Heres more of the script that controls movement:
void Update()
{
//Move character using gyro//
//Controls input speed
_InputDir = getAccelerometer(Input.acceleration);
//Controll character using accelerometer
transform.Translate (_InputDir.x * xSpeed, _InputDir.y * ySpeed, 0);
//Control character rotation
currentAcceleration = Vector3.Lerp(currentAcceleration, Input.acceleration - initialAcceleration, Time.deltaTime/smooth);
newRotation = Mathf.Clamp(currentAcceleration.x * sensitivity, -5, 5);
transform.Rotate(0, 0, -newRotation);
//Constrain character movement to viewport//
Vector3 boundaryVector = transform.position;
Vector3 pos = Camera.main.WorldToViewportPoint (transform.position);
pos.x = Mathf.Clamp01(pos.x);
pos.y = Mathf.Clamp01(pos.y);
pos.z = Mathf.Clamp (transform.position.z, 100, 50);
transform.position = Camera.main.ViewportToWorldPoint(pos);
}