- Home /
 
               Question by 
               Jurassic · Jan 31, 2014 at 02:40 AM · 
                c#movementtransformtransformdirection  
              
 
              Push the player forward C#
I'm having some trouble understanding how the 3d movement works in Unity.
Basically I want the player to be pushed forward and unable to turn and ignore gravity for a few seconds after pressing a key (F is used in the code I pasted below). I've been tinkering at this bit of code for over a day and I can't figure out why it isn't doing what I want it to. I've been removing and adding and commenting out a lot of lines so sorry if this is a bit difficult to piece together. I can elaborate further if necessary.
     void Update () 
     {
         //Hoverboard functionality
         if(isRidingBoard){
             if(ridetimer<maxridetime){
                 ridetimer++;
             }
             else{
                 isRidingBoard = false;
                 ridetimer = 0;
             }
         }
 
         //Main Movement script
         if(playerInv.isCrafting()==false) {
 
             //Calculate player's velocity
             Vector3 horizontalVelocity = new Vector3(controller.velocity.x, 0, controller.velocity.z);
             float horizontalSpeed = horizontalVelocity.magnitude;
 
             //Rotate the player in the direction he's moving
             if(horizontalSpeed>0){
                 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(controller.velocity), Time.deltaTime * rotationDamp);
             }
 
             //Hold right click to turn character
             if(Input.GetMouseButton(1)){
                 transform.rotation=Quaternion.LookRotation(new Vector3(transform.position.x-PCcamera.transform.position.x,0,transform.position.z-PCcamera.transform.position.z));
             }
 
             //Basic WASD movement
             if (controller.isGrounded &&!isRidingBoard) {
                 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
                 moveDirection = transform.TransformDirection(moveDirection);
                 moveDirection *= speed;
 
                 if (Input.GetButtonDown("Jump") && !isRidingBoard)
                     moveDirection.y = jumpSpeed;
             }
 
             //Ride the hoverboard
             if(Input.GetKeyDown(KeyCode.F) && !isRidingBoard){
                 isRidingBoard = true;
             }
 
             //Apply gravity to the player
             moveDirection.y -= gravity * Time.deltaTime;
 
             //Lock the player's rotation on the X and Z axis
             transform.rotation = Quaternion.Euler(lockPos, transform.rotation.eulerAngles.y, lockPos);
 
             //Move the player
             if(!isRidingBoard){
                 controller.Move(moveDirection * Time.deltaTime);
             }
 
             if(isRidingBoard){
                 if(ridetimer<maxridetime){
                     hoverBoardRide(moveDirection);
                 }
             }
 
         }
     }
 
     void hoverBoardRide(Vector3 mDirection){
 
         //mDirection = transform.TransformDirection(mDirection);
         //mDirection *= speed;
         controller.Move(mDirection * Time.deltaTime);
     }
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                