Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class PlayerControl : MonoBehaviour
- {
- public Transform player;
- public Transform playerCam;
- public Transform playerObj;
- public float mouseSensitivity;
- public bool lockCursor = true;
- float cameraPitch = 0.0f;
- public Vector3 camOffset;
- public float walkSpeed;
- public float gravValue = -13.0f;
- float velocityY = 0.0f;
- public float jumpMagnitude;
- CharacterController controller = null;
- Vector3 velocity;
- // Start is called before the first frame update
- void Start()
- {
- controller = playerObj.GetComponent<CharacterController>();
- if (lockCursor)
- {
- Cursor.lockState = CursorLockMode.Locked;
- Cursor.visible = false;
- }
- }
- // Update is called once per frame
- void Update()
- {
- UpdateMouseLook();
- PlayerMovement();
- Jump();
- }
- void UpdateMouseLook()
- {
- Vector2 mouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
- //remember to rotate both camera and player along the Y axis
- player.transform.Rotate(Vector3.up * mouseDelta.x * mouseSensitivity);
- playerCam.transform.Rotate(Vector3.up * mouseDelta.x* mouseSensitivity);
- playerObj.transform.Rotate(Vector3.up * mouseDelta.x * mouseSensitivity);
- //only rotate the camera along x axis
- cameraPitch -= mouseDelta.y * mouseSensitivity;
- cameraPitch = Mathf.Clamp(cameraPitch, -90.0f, 90.0f);
- playerCam.localEulerAngles = Vector3.right * cameraPitch;
- }
- void PlayerMovement()
- {
- player.transform.position = playerObj.transform.position + camOffset;
- playerCam.transform.position = playerObj.transform.position + camOffset;
- //grab input axis for keys
- Vector2 inputDir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
- inputDir.Normalize();
- //
- //
- velocityY += gravValue * Time.deltaTime;
- velocity = (playerObj.transform.forward * inputDir.y + playerObj.transform.right * inputDir.x) * walkSpeed + Vector3.up * velocityY;
- controller.Move(velocity * Time.deltaTime);
- }
- void Jump()
- {
- if (Input.GetButtonDown("Jump") && controller.isGrounded)
- {
- Debug.Log("Jumping");
- velocityY = Mathf.Sqrt(jumpMagnitude * -2f * gravValue);
- controller.Move(velocity + new Vector3(0,velocityY,0) * Time.deltaTime);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement