Getting My Character to Move

My character currently has the below script attached and moves when playing in PC by holiding left arrow or right arrow to move left and right respectively. I want to be able Vto do left and right movement on deviceV by tilting device left and right. Game is for android and is done to fit portrait. Within **start()**I have gyro code and withing FixedUpdate() I have accelerometer code to try this. Most of other code is for the normal movements of the character on PC. Can anyone help me understand why it isnt working at the minute? Currently when the device is tilted toward player the charatcer moves right… if the minus is removed from dir.x = -Input.acceleration.y; tilting toward you moves player left…I want to move left and right but tilting left and right to do so ?

using UnityEngine;
using System.Collections;

// Require these components when using this script
[RequireComponent(typeof (Animator))]
[RequireComponent(typeof (CapsuleCollider))]
[RequireComponent(typeof (Rigidbody))]
public class PlayerControl_S : MonoBehaviour
{
	[System.NonSerialized]					
	public float meshMoveSpeed = 4.0f;
	
	[System.NonSerialized]
	public float animSpeed = 1.5f;				// a public setting for overall animator animation speed
	
	private Animator anim;							// a reference to the animator on the character
	private AnimatorStateInfo currentBaseState;		// a reference to the current state of the animator, used for base layer
	private AnimatorStateInfo layer2CurrentState;	// a reference to the current state of the animator, used for layer 2

	public float movementScale; 
	public Vector3 dir;
	
	
	void Start ()
	{
		dir = transform.position;
		dir.y = Vector3.Dot (Input.gyro.gravity, Vector3.up) * meshMoveSpeed;
		transform.position = dir;

		// initialising reference variables
		anim = GetComponent<Animator>();					  					
		if(anim.layerCount ==2)
			anim.SetLayerWeight(1, 1);
	}

	void OnTriggerEnter (Collider other)
	{
		if (other.tag == "Coin")
		{
			audio.Play();
		}
	}

	void OnAnimatorMove() //Tells Unity that root motion is handled by the script
	{
		if(anim)
		{
			Vector3 newPosition = transform.position;
			newPosition.z += anim.GetFloat("Speed")* meshMoveSpeed * Time.deltaTime;
			newPosition.x += anim.GetFloat("Direction") * meshMoveSpeed * Time.deltaTime;
			transform.position = newPosition;
		}
	} 
	
	void FixedUpdate ()
	{    
		float h = Input.GetAxis("Horizontal");				// setup h variable as our horizontal input axis
		float v = Input.GetAxis("Vertical");				// setup v variables as our vertical input axis
		anim.SetFloat("Speed", 1f);							// set our animator's float parameter 'Speed' equal to the vertical input axis				
		anim.SetFloat("Direction", h); 						// set our animator's float parameter 'Direction' equal to the horizontal input axis		
		anim.speed = animSpeed;								// set the speed of our animator to the public variable 'animSpeed'
		//anim.SetLookAtWeight(lookWeight);					// set the Look At Weight - amount to use look at IK vs using the head's animation
		currentBaseState = anim.GetCurrentAnimatorStateInfo(0);	// set our currentState variable to the current state of the Base Layer (0) of animation

		//Vector3 dir = Vector3.zero;

		if (Input.deviceOrientation == DeviceOrientation.Portrait) 
		{
			dir.x = -Input.acceleration.y;
			//dir.x = Input.acceleration.x;

			if(dir.sqrMagnitude > 1)
			{
			dir.Normalize();
			dir *= Time.deltaTime;
			transform.Translate(dir * meshMoveSpeed);
			}
		
		}

		//Controls the movement speed
		if(v <= 0.0f)
		{
			meshMoveSpeed = 4;	
		}
		else
		{
			meshMoveSpeed = 6;
		}
		
		if(anim.layerCount ==2)
		{
			layer2CurrentState = anim.GetCurrentAnimatorStateInfo(1);	// set our layer2CurrentState variable to the current state of the second Layer (1) of animation
		}
    }
    }

I took out all the gyro code and the dir code and simply wrote this and it worked perfectly: transform.Translate (Input.acceleration.x, 0, 0);