using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerManager : MonoBehaviour { public float speed = 10; public float runSpeed = 25; public float rotateSpeed = 5; public float mouseSensitive = 200; public float fireRate = 2; private float fireTime; public float buildRate = 0.5f; private float buildTime; private bool run = false; private Camera playerCamera; private Rigidbody rigidBody; public int baricadeMaterials = 10; public List weaponList = new List(); [HideInInspector]public int selectedWeapon = 0; // Start is called before the first frame update void Start() { fireTime = fireRate; buildTime = buildRate; playerCamera = GetComponentInChildren(); rigidBody = GetComponent(); Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } // Update is called once per frame void Update() { Move(); RunSwitch(); SelectWeapon(); BuildBlock(); } void FixedUpdate() { Rotate(); } void Move() { rigidBody.MovePosition( transform.position + (transform.forward * (run ? runSpeed : speed) * Input.GetAxis("Vertical") * Time.deltaTime) + (transform.right * (run ? runSpeed : speed) * Input.GetAxis("Horizontal") * Time.deltaTime) ); } void Rotate() { transform.Rotate(new Vector3(0, rotateSpeed * Input.GetAxis("Mouse X") * mouseSensitive * Time.deltaTime, 0)); if ( ((playerCamera.transform.localEulerAngles.x >= 270 && playerCamera.transform.localEulerAngles.x <= 360) && playerCamera.transform.localEulerAngles.y == 0 && playerCamera.transform.localEulerAngles.z == 0) || ((playerCamera.transform.localEulerAngles.x <= 90 && playerCamera.transform.localEulerAngles.x >= 0) && playerCamera.transform.localEulerAngles.y == 0 && playerCamera.transform.localEulerAngles.z == 0) ) { playerCamera.transform.Rotate(new Vector3(rotateSpeed * -Input.GetAxis("Mouse Y") * mouseSensitive * Time.deltaTime, 0, 0)); } else if ( ((playerCamera.transform.localEulerAngles.x >= 270 && playerCamera.transform.localEulerAngles.x <= 360) && playerCamera.transform.localEulerAngles.y == 180 && playerCamera.transform.localEulerAngles.z == 180) ) { playerCamera.transform.Rotate(new Vector3(rotateSpeed * (-Input.GetAxis("Mouse Y") > 0 ? -Input.GetAxis("Mouse Y") : 0) * mouseSensitive * Time.deltaTime, 0, 0)); } else if ( ((playerCamera.transform.localEulerAngles.x <= 90 && playerCamera.transform.localEulerAngles.x >= 0) && playerCamera.transform.localEulerAngles.y == 180 && playerCamera.transform.localEulerAngles.z == 180) ) { playerCamera.transform.Rotate(new Vector3(rotateSpeed * (-Input.GetAxis("Mouse Y") < 0 ? -Input.GetAxis("Mouse Y") : 0) * mouseSensitive * Time.deltaTime, 0, 0)); } } void RunSwitch() { if (Input.GetAxisRaw("Run") > 0) { run = true; } else { run = false; } } void SelectWeapon() { if (weaponList.Count > 0) { if (Input.mouseScrollDelta.y > 0) { if (weaponList.Count > selectedWeapon + 1) { selectedWeapon++; } else { selectedWeapon = 0; } } else if (Input.mouseScrollDelta.y < 0) { if (selectedWeapon > 0) { selectedWeapon--; } else { selectedWeapon = weaponList.Count - 1; } } } } void BuildBlock () { if (Input.GetAxisRaw("Fire1") > 0 && buildTime < Time.time && weaponList.Count > 0) { Ray ray = playerCamera.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity, LayerMask.GetMask("BuildPlace"))) { BlockManager blockManager = weaponList[selectedWeapon].GetComponent(); if (blockManager != null) { Instantiate(weaponList[selectedWeapon], hit.point, transform.rotation); buildTime = buildRate + Time.time; } } } } void BuildBarricade() { if () { } } }