Move in global/world coordinate

Hi, i will make a topdown shooter, and i have a little problem.
Move character will be in WASD and aim will be in mouse, but if i try move mouse, for rotate my character aim, the character move coordinate is changed.
I like my character moving in global/world coordinate. Up will be forever up, down will be forever down, etc… But i can not do make this, anybody please help, my code is following:

using UnityEngine;
using System.Collections;

public class Player : MonoBehaviour {
	CharacterController controller;
	
	public float speed = 10;
	public float gravity = -0.05f;
	public float rotationSpeed = 400;
	
	private float velocityY;

	// Use this for initialization
	void Start () {
		controller = GetComponent<CharacterController>();
	}
	
	// Update is called once per frame
	void Update () {
		velocityY += gravity;
		
		Vector3 rotation = new Vector3(0, Input.GetAxis("Mouse X")*rotationSpeed, 0);
		transform.Rotate(rotation * Time.deltaTime);
		
		Vector3 direction = new Vector3(Input.GetAxis("Horizontal")*speed, velocityY, Input.GetAxis("Vertical")*speed);
		
		direction = transform.TransformDirection(direction);
		
		controller.Move(direction * Time.deltaTime);		
	}
}

Please, excuse me my english, i’m germany.

direction = transform.TransformDirection(direction);

With a fast look at your code looks like that you just have to get rid of the line above cause your direction was already calculated in world coordinates.