Advertisement
Placido_GDD

MVC Player Controller

Feb 14th, 2022
877
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.78 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class PlayerControl : MonoBehaviour
  6. {
  7.  
  8.     public GameObject Player;
  9.     public PlayerData playerData;
  10.     // Start is called before the first frame update
  11.     void Start()
  12.     {
  13.         playerData = Player.GetComponent<PlayerData>();
  14.         playerData.controller = Player.GetComponent<CharacterController>();
  15.         if (playerData.lockCursor)
  16.         {
  17.             Cursor.lockState = CursorLockMode.Locked;
  18.             Cursor.visible = false;
  19.         }
  20.     }
  21.  
  22.     // Update is called once per frame
  23.     void Update()
  24.     {
  25.         UpdateMouseLook();
  26.         PlayerMovement();
  27.         Jump();
  28.         WeaponControl();
  29.        
  30.     }
  31.  
  32.     void UpdateMouseLook()
  33.     {
  34.         Vector2 mouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
  35.         //remember to rotate both camera and player along the Y axis
  36.         playerData.player.transform.Rotate(Vector3.up * mouseDelta.x * playerData.mouseSensitivity);
  37.         playerData.playerCam.transform.Rotate(Vector3.up * mouseDelta.x* playerData.mouseSensitivity);
  38.         playerData.playerObj.transform.Rotate(Vector3.up * mouseDelta.x * playerData.mouseSensitivity);
  39.         //only rotate the camera along x axis
  40.         playerData.cameraPitch -= mouseDelta.y * playerData.mouseSensitivity;
  41.         playerData.cameraPitch = Mathf.Clamp(playerData.cameraPitch, -90.0f, 90.0f);
  42.         playerData.playerCam.localEulerAngles = Vector3.right * playerData.cameraPitch;
  43.     }
  44.  
  45.     void PlayerMovement()
  46.     {
  47.         playerData.player.transform.position = playerData.playerObj.transform.position + playerData.camOffset;
  48.         playerData.playerCam.transform.position = playerData.playerObj.transform.position + playerData.camOffset;
  49.         //grab input axis for keys
  50.         Vector2 inputDir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
  51.         inputDir.Normalize();
  52.         //
  53.         //
  54.         playerData.velocityY += playerData.gravValue * Time.deltaTime;
  55.         playerData.velocity = (playerData.playerObj.transform.forward * inputDir.y + playerData.playerObj.transform.right * inputDir.x) * playerData.walkSpeed + Vector3.up * playerData.velocityY;
  56.         playerData.controller.Move(playerData.velocity * Time.deltaTime);
  57.     }
  58.  
  59.     void Jump()
  60.     {
  61.         if (Input.GetButtonDown("Jump") && playerData.controller.isGrounded)
  62.         {
  63.             Debug.Log("Jumping");
  64.             playerData.velocityY = Mathf.Sqrt(playerData.jumpMagnitude * -2f * playerData.gravValue);
  65.             playerData.velocity.y += playerData.velocityY;
  66.  
  67.         }
  68.     }
  69.  
  70.     void WeaponControl()
  71.     {
  72.         if (Input.GetMouseButtonDown(0) && playerData.readyToFire == true)
  73.         {
  74.             FireWeapon();
  75.         }
  76.     }
  77.     void FireWeapon()
  78.     {
  79.         if (playerData.readyToFire == false)
  80.         {
  81.             return;
  82.         }
  83.         //
  84.         Debug.Log("Firing Weapon");
  85.        
  86.         RaycastHit hit;
  87.         if (Physics.Raycast(playerData.gunBarrel.transform.position, playerData.fpsCam.transform.forward, out hit, playerData.weaponRange))
  88.         {
  89.             Debug.Log("PEW");
  90.             if (hit.collider.tag == "Enemy")
  91.             {
  92.                 playerData.targetData = hit.collider.gameObject.GetComponent<EnemyData>();
  93.                 playerData.targetData.logicID = 1;
  94.                 playerData.targetData.health -= playerData.gunDamage;
  95.                 Debug.Log("Enemy Hit");
  96.             }
  97.         }
  98.         //
  99.         StartCoroutine(StartWeaponCD());
  100.     }
  101.  
  102.     public IEnumerator StartWeaponCD()
  103.     {
  104.         playerData.readyToFire = false;
  105.         yield return new WaitForSeconds(playerData.weaponCD);
  106.         playerData.readyToFire = true;
  107.     }
  108. }
  109.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement