- Home /
 
               Question by 
               Humblebee88 · Mar 06, 2014 at 12:49 AM · 
                movementspaceship  
              
 
              Forward movement rotated on movement script?
I'm trying to make a movement script for a space ship, and I'm new to javascript in general so I'm sorry if this is a noob question.
I'm having an issue where my ships forward orientation gets rotated after I make a hard turn. My ship will start moving horizontally in relationship to the ships initial forward vector. I am losing my mind trying to figure it out. Does anyone have any idea what might be causing this? Any help would be much appreciated!
here's the script
 #pragma strict
 
 private var moveDirection : Vector3;
 private var horzMoveRotation : float;
 private var vertMoveRotation : float;
 private var shipSpeed : float = 40;
 private var horizonalturnspeed : float = 60;
 private var verticalturnspeed : float = 60;
 private var haveMinAngle : boolean = false;
 private var target : float = 0;
 private var Rrolltarget : float = -50;
 private var Lrolltarget : float = 50;
 private var rollspeed : float = 40;
 //var looktarget : Transform;
 
 function FixedUpdate()
 {
     //movement speed
     //var shipDirection: Vector3 = (looktarget.position - tansform.position);
     moveDirection = Vector3(0, 0,1);
     moveDirection = transform.TransformDirection(moveDirection);
     moveDirection *= shipSpeed;
     transform.Translate(moveDirection*Time.deltaTime);
     
     //steering
     horzMoveRotation = Input.GetAxis ("Horizontal") * horizonalturnspeed;
     vertMoveRotation = Input.GetAxis ("Vertical") * horizonalturnspeed;
     horzMoveRotation *= Time.deltaTime;
     vertMoveRotation *= Time.deltaTime;
     transform.Rotate (vertMoveRotation,horzMoveRotation,0);    
     
     //reset roll
     if(Input.GetAxis ("Horizontal") == 0)
      {
           var turnAngle : float = Mathf.MoveTowardsAngle(transform.eulerAngles.z, target,rollspeed * Time.deltaTime);
           transform.eulerAngles = Vector3(transform.eulerAngles.x,transform.eulerAngles.y,turnAngle);
      }
      //print ("horizontal axis" +(Input.GetAxis ("Horizontal")));
      
      //roll right
      if(Input.GetAxis ("Horizontal") > 0)
      {
          var rTurnAngle : float = Mathf.MoveTowardsAngle(transform.eulerAngles.z, Rrolltarget,rollspeed * Time.deltaTime);
          transform.eulerAngles = Vector3(transform.eulerAngles.x,transform.eulerAngles.y,rTurnAngle);
      }
      
      //roll left
      if(Input.GetAxis ("Horizontal") < 0)
      {
          var lTurnAngle : float = Mathf.MoveTowardsAngle(transform.eulerAngles.z, Lrolltarget,rollspeed * Time.deltaTime);
          transform.eulerAngles = Vector3(transform.eulerAngles.x,transform.eulerAngles.y,lTurnAngle);
      }
 }
               Comment
              
 
               
              In a quick read the only thing that jumped out at me is that you are doing your turning after you move your object forward. How about moving lines 25 - 30 above line 18.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                