Copying and Pasting cs Code

In cs, like in almost any computer programming language, reading data from a file can be tricky. You add extra lines of code to tell the computer what to do. Sometimes you can copy and paste these lines from other peoples’ code.

For example, you can follow the pattern in this listing:

     void UpdateSmoothedMovementDirection()
     {
         Transform cameraTransform = Camera.main.transform;
         bool grounded = IsGrounded();

         // Forward vector relative to the camera along the x-z plane
         Vector3 forward = cameraTransform.TransformDirection(Vector3.forward);
         forward.y = 0;
         forward = forward.normalized;

         // Right vector relative to the camera
         // Always orthogonal to the forward vector
         Vector3 right = new Vector3(forward.z, 0, -forward.x);

         float v = Input.GetAxisRaw("Vertical");
         float h = Input.GetAxisRaw("Horizontal");

         // Are we moving backwards or looking backwards
         if (v < -0.2f)
             movingBack = true;
         else
             movingBack = false;

         bool wasMoving = isMoving;
         isMoving = Mathf.Abs(h) > 0.1f || Mathf.Abs(v) > 0.1f;

         // Target direction relative to the camera
         Vector3 targetDirection = h * right + v * forward;

         // Grounded controls
         if (grounded)
         {
             // Lock camera for short period when transitioning moving & standing still
             lockCameraTimer += Time.deltaTime;
             if (isMoving != wasMoving)
                 lockCameraTimer = 0.0f;

             // We store speed and direction seperately,
             // so that when the character stands still we still have a valid forward direction
             // moveDirection is always normalized, and we only update it if there is user input.
             if (targetDirection != Vector3.zero)
             {
                 // If we are really slow, just snap to the target direction
                 if (moveSpeed < walkSpeed * 0.9f && grounded)
                 {
                     moveDirection = targetDirection.normalized;
                 }
                 // Otherwise smoothly turn towards it
                 else
                 {
                     moveDirection = Vector3.RotateTowards(moveDirection, targetDirection, rotateSpeed * Mathf.Deg2Rad * Time.deltaTime, 1000);

                     moveDirection = moveDirection.normalized;
                 }
             }

             // Smooth the speed based on the current target direction
             float curSmooth = speedSmoothing * Time.deltaTime;

             // Choose target speed
             //* We want to support analog input but make sure you cant walk faster diagonally than just forward or sideways
             float targetSpeed = Mathf.Min(targetDirection.magnitude, 1.0f);

             _characterState = CharacterState.Idle;

             // Pick speed modifier
             if (Input.GetKey(KeyCode.LeftShift) | Input.GetKey(KeyCode.RightShift))
             {
                 targetSpeed *= runSpeed;
                 _characterState = CharacterState.Running;
             }
             else if (Time.time - trotAfterSeconds > walkTimeStart)
             {
                 targetSpeed *= trotSpeed;
                 _characterState = CharacterState.Trotting;
             }
             else
             {
                 targetSpeed *= walkSpeed;
                 _characterState = CharacterState.Walking;
             }

             moveSpeed = Mathf.Lerp(moveSpeed, targetSpeed, curSmooth);

             // Reset walk time start when we slow down
             if (moveSpeed < walkSpeed * 0.3f)
                 walkTimeStart = Time.time;
         }
         // In air controls
         else
         {
             // Lock camera while in air
             if (jumping)
                 lockCameraTimer = 0.0f;

             if (isMoving)
                 inAirVelocity += targetDirection.normalized * Time.deltaTime * inAirControlAcceleration;
         }



     }