- Home /
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.
Answer by hvilela · Oct 11, 2012 at 06:52 PM
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.
Your answer
![](https://koobas.hobune.stream/wayback/20220613082145im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
‘CharacterController’ does not contain a definition for ‘Move’ 0 Answers
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers