- 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
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