Added PlayerHealth and PlayerShoot

This commit is contained in:
2026-06-18 18:04:22 +03:00
parent c9c6c3e032
commit 87762d1721
19 changed files with 1600 additions and 754 deletions
@@ -5,47 +5,70 @@ using Unity.Collections;
public class PlayerController : NetworkBehaviour
{
[SerializeField] private TMP_InputField PlayerNameInputField;
[SerializeField] private TMP_Text PlayerNameText;
[SerializeField] private float moveSpeed = 5f;
public NetworkVariable<FixedString128Bytes> PlayerName = new NetworkVariable<FixedString128Bytes>(
"Джон Бляк",
NetworkVariableReadPermission.Everyone,
NetworkVariableWritePermission.Owner
);
[SerializeField] private Camera playerCamera;
[SerializeField] private float mouseSensitivity = 2f;
[SerializeField] private Transform cameraRoot;
float verticalRotation = 0f;
public override void OnNetworkSpawn()
{
PlayerName.OnValueChanged += OnPlayerNameChanged;
SetPlayerNameText();
if (playerCamera != null)
{
playerCamera.enabled = IsOwner;
playerCamera.GetComponent<AudioListener>().enabled = IsOwner;
}
if (!IsOwner) return;
if (IsOwner)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
this.transform.position = new Vector3(Random.Range(-10f, 10f), 1f, Random.Range(-10f, 10f));
PlayerNameInputField.onValueChanged.AddListener(OnPlayerNameInputChanged);
if (IsOwner)
{
GetComponent<Renderer>().material.color = Color.blue;
}
else
{
GetComponent<Renderer>().material.color = Color.red;
}
if (IsOwner)
{
transform.position = new Vector3(Random.Range(-10f, 10f), 1f, Random.Range(-10f, 10f));
}
}
private void OnPlayerNameChanged(FixedString128Bytes previousValue, FixedString128Bytes newValue)
public void Update()
{
Debug.Log($"Player name changed from {previousValue} to {newValue}");
SetPlayerNameText();
if(!IsOwner) return;
HandleMovement();
HandleRotation();
}
private void OnPlayerNameInputChanged(string value)
private void HandleMovement()
{
Debug.Log($"Player name input changed to {value}");
SetPlayerNameText();
float _moveX = Input.GetAxis("Horizontal");
float _moveZ = Input.GetAxis("Vertical");
Vector3 move = transform.right * _moveX + transform.forward * _moveZ;
transform.position += move * moveSpeed * Time.deltaTime;
}
public override void OnNetworkDespawn()
private void HandleRotation()
{
PlayerName.OnValueChanged -= OnPlayerNameChanged;
if(IsOwner)
PlayerNameInputField.onValueChanged.RemoveListener(OnPlayerNameInputChanged);
}
float _mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float _mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
private void SetPlayerNameText()
{
PlayerNameText.text = PlayerName.Value.ToString();
transform.Rotate(Vector3.up * _mouseX);
verticalRotation -= _mouseY;
verticalRotation = Mathf.Clamp(verticalRotation, -90f, 90f);
cameraRoot.localRotation = Quaternion.Euler(verticalRotation, 0f, 0f);
}
}