- Home /
Script that stays behind player that rotates the player along with the camera/mouse (third person)
hi im developing a game and have been looking for days on how i can add this, basically i want the player to always look away from the camera, so when you move the mouse/look around the player rotates along with it, like it is in games like pubg, so you can't look at the player from any other angle. i have a camera and movement script already, i would appreciate it massively if someone read through and changed it, or even posted a script like it that has the features that i need, thanks alot in advance.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Hotdogcontrollernew : MonoBehaviour
 {
     public float walkSpeed = 10;
     public float runSpeed = 16;
     public float gravity = -12;
     public float jumpHeight = 1;
     [Range(0,1)]
     public float airControlPercent;
 
     public float turnSmoothTime = 0.2f;
     float turnSmoothVelocity;
 
     public float speedSmoothTime = 0.1f;
     float speedSmoothVelocity;
     float currentSpeed;
     float velocityY;
 
     Animator animator;
     Transform cameraT;
     CharacterController controller;
 
     // Start is called before the first frame update
     void Start()
     {
         animator = GetComponent<Animator>();
         cameraT = Camera.main.transform;
         controller = GetComponent<CharacterController>();
     }
 
     // Update is called once per frame
     void Update(){
         // input
         Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
         Vector2 inputDir = input.normalized;
         bool running = Input.GetKey(KeyCode.LeftShift);
 
         Move(inputDir, running);
 
         if (Input.GetKeyDown (KeyCode.Space)){
             Jump ();
         }
         //animator
         float animationSpeedPercent = ((running) ? currentSpeed / runSpeed : currentSpeed / walkSpeed * .5f);
         animator.SetFloat("speedPercent", animationSpeedPercent, speedSmoothTime, Time.deltaTime);
 
     }
     void Move(Vector2 inputDir, bool running){
         if (inputDir != Vector2.zero)
         {
             float targetRotation = Mathf.Atan2(inputDir.x, inputDir.y) * Mathf.Rad2Deg + cameraT.eulerAngles.y;
             transform.eulerAngles = Vector3.up * Mathf.SmoothDampAngle(transform.eulerAngles.y, targetRotation, ref turnSmoothVelocity, GetModifiedSmoothTime(turnSmoothTime));
         }
 
         
         float targetSpeed = ((running) ? runSpeed : walkSpeed) * inputDir.magnitude;
         currentSpeed = Mathf.SmoothDamp(currentSpeed, targetSpeed, ref speedSmoothVelocity, GetModifiedSmoothTime(speedSmoothTime));
 
         velocityY += Time.deltaTime * gravity;
         Vector3 velocity = transform.forward * currentSpeed + Vector3.up * velocityY;
 
         controller.Move(velocity * Time.deltaTime);
         currentSpeed = new Vector2(controller.velocity.x, controller.velocity.z).magnitude;
 
         if (controller.isGrounded)
         {
             velocityY = 0;
         }
 
         
     }
 
     void Jump(){
         if (controller.isGrounded) {
             float jumpVelocity = Mathf.Sqrt(-2 * gravity * jumpHeight);
             velocityY = jumpVelocity;
 
         }
 
     }
 
     float GetModifiedSmoothTime(float smoothTime) {
         if (controller.isGrounded){
             return smoothTime;
         }
 
         if (airControlPercent == 0){
             return float.MaxValue;
         }
         return smoothTime / airControlPercent;
     }
 }
-- Camera --
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ThirdPersonCamera : MonoBehaviour
 {
     public bool lockCursor;
     public float mouseSensitivity = 10;
     public Transform target;
     public float dstFromTarget = 2;
     public Vector2 pitchMinMax = new Vector2(-85, 85);
 
     public float rotationSmoothTime = 0.12f;
     Vector3 rotationSmoothVelocity;
     Vector3 currentRotation;
 
     float yaw;
     float pitch;
 
     void Start()
     {
         if (lockCursor)
         {
             Cursor.lockState = CursorLockMode.Locked;
             Cursor.visible = false;
         }
 
     }
 
 
     void LateUpdate ()
     {
 
         yaw += Input.GetAxis("Mouse X") * mouseSensitivity;
         pitch -= Input.GetAxis("Mouse Y") * mouseSensitivity;
         pitch = Mathf.Clamp(pitch, pitchMinMax.x, pitchMinMax.y);
 
         currentRotation = Vector3.SmoothDamp (currentRotation, new Vector3 (pitch, yaw), ref rotationSmoothVelocity, rotationSmoothTime);
         transform.eulerAngles = currentRotation;
 
         transform.position = target.position - transform.forward * dstFromTarget;
         
     }
 }
Your answer
 
 
             Follow this Question
Related Questions
Camera Rotating when the player reach a specific position 0 Answers
How to make my player look in the direction of its movement? 3 Answers
How to smoothly rotate camera around an object with touch 1 Answer
Choppy movement of moving quad with rotating camera 1 Answer
What is difference between local and global coord Vector3. 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                