Accelerometer start position


I’m making a 2D mobile game where I have an object that’s moving with accelerometer.
I’m using translate for this:

transform.Translate (Input.acceleration.x, Input.acceleration.y, 0);

But the starting default position for this is when my phone lies horizontally.
I want to make this starting position when you hold your phone as usual (about 60 degrees to the ground).
How can I do that?

I think this should solve your issue:

using UnityEngine;
using System.Collections;

public class AccelerometerInput : MonoBehaviour {

        public float Speed; // 10 is a good number to this variable.

	private Vector3 dirInit =;

	void Start()
		dirInit.z = Input.acceleration.z;
		dirInit.x = Input.acceleration.x;

	// Update is called once per frame
	void Update () {

		Vector3 dir =;

            // you need to send the difference of your current accelerometer position to the initial state.
		dir.x = Input.acceleration.x - dirInit.x;
		dir.z = Input.acceleration.z - dirInit.z;
		if (dir.sqrMagnitude > 1)
		dir *= Time.deltaTime;
		transform.Translate(dir * Speed);