I have the following code:
var moveSpeed:float = 10.0;
var rotateSpeed:float = 100.0;
function Update () {
var translate:float = Input.GetAxis( "Vertical" ) * moveSpeed;
var rotate:float = Input.GetAxis( "Horizontal" ) * rotateSpeed;
Debug.Log( transform.forward );
//Debug.Log( rotate );
translate *= Time.deltaTime;
rotate *= Time.deltaTime;
transform.Translate( 0, 0, translate );
transform.Rotate( 0, rotate, 0 );
}
Which functions as expected (WS control forward movement, AD control rotation). However, if I try the following:
var moveSpeed:float = 10.0;
var rotateSpeed:float = 100.0;
function Update () {
var translate:float = Input.GetAxis( "Vertical" ) * moveSpeed;
var rotate:float = Input.GetAxis( "Horizontal" ) * rotateSpeed;
Debug.Log( transform.forward );
//Debug.Log( rotate );
translate *= Time.deltaTime;
rotate *= Time.deltaTime;
transform.Translate( transform.forward * translate ); // changed here!
transform.Rotate( 0, rotate, 0 );
}
It creates a disparity between the camera direction and the movement direction. Specifically, rotating the camera full circle seems to reverse the forward direction (so perhaps the scale is halved?).