3D runner, Having problems when the character makes a turn

Hello, i am having a problem with my character, i am doing a 3D runner game, and when my Character makes a turn, all the commands are changed.

in this Script my character is running automatic like a 3D runner, i can jump and move to right and left, but when my trigger enters, all the command go wrong, like when i press “A” he moves back and when i click “D” he moves forward(like a speed boost, since is a runner)

PS: the Anglo in the trigger part is set to 90 in the Inspector

i am really sorry about my english, but i hope all can understand

using UnityEngine;
using System.Collections;

public class PlayerControl : MonoBehaviour {
// Use this for initialization

public GameControlScript control;
CharacterController controller;
public float speed = 6.0f;
public float jumpSpeed = 20.0f;
public float gravity = 20.0f;
private Vector3 moveDirection;

private float verticalSpeed = 0;

public CountdownScript count;  //CountdownScript instance
public PauseMenuScript pause;  //PauseMenuScript instance
//audio source reference variables
public AudioSource powerupCollectSound;
public AudioSource jumpSound;
public AudioSource snagCollectSound;



void Start () {
	//Debug.Log("Inside player control script start");
	controller = GetComponent<CharacterController>();
	moveDirection = Vector3.zero;

}

// Update is called once per frame
void  Update (){
	//accelerometer and touch detection

	if (count.isCountDown) 
	{
		transform.localPosition += transform.forward * speed * Time.deltaTime;
			
	//check if grounded and countdown is done with
		if (controller.isGrounded) {
			// We are grounded, so recalculate
			verticalSpeed = 0;
			// move direction directly from axes
			//transform.localPosition += transform.forward * speed * Time.deltaTime;
			animation.Play("run");
			//check if game is paused
			if(pause.paused==false)
				gameObject.GetComponent<AudioSource>().enabled = true;
			else
				gameObject.GetComponent<AudioSource>().enabled = false;
			moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, 0); // Controla o Speed do personagem para os lados

			moveDirection = transform.TransformDirection(moveDirection);
			moveDirection *= speed;
			
			jumpSound.Stop();

			if (Input.GetButton ("Jump")) {
				animation.Stop("run");
				animation.Play("jump_pose");

				jumpSound.Play();
				gameObject.GetComponent<AudioSource>().enabled = false;
				//				moveDirection.z = jumpSpeed;

				moveDirection = transform.forward * jumpSpeed;
				
				moveDirection.y = jumpSpeed;

				verticalSpeed = jumpSpeed;

			}
			
		}

		if(control.isGameOver){ 
			gameObject.GetComponent<AudioSource>().enabled = false;
		}
		// Apply gravity
		verticalSpeed -= gravity * Time.deltaTime;

		moveDirection = new Vector3(Input.GetAxis ("Horizontal")* speed, verticalSpeed, 0);
		
		// Move the controller
		controller.Move(moveDirection * Time.deltaTime);
	}	
}

void OnTriggerEnter(Collider other){

	if (other.gameObject.name == "Trigger de curva") {

		Quaternion PersonagemRotation;
		PersonagemRotation	= Quaternion.Euler (0,
		                                        0 +   other.gameObject.GetComponent<TriggerCurvaScript>().Anglo,
		                                        0);
		transform.rotation = Quaternion.Slerp(transform.rotation, PersonagemRotation, 1);

	}

You need to modify the horizontal movement value based off the players current rotation. Looks like your issue is on lines 48 and 84.

Old line 48:
moveDirection = new Vector3(Input.GetAxis(“Horizontal”), 0, 0);
New line 48:
float dir = Input.GetAxis(“Horizontal”) == 1 ? transform.right : transform.left;
moveDirection = new Vector3(dir, 0, 0);

And then do the same thing to line 84.