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
@@ -0,0 +1,62 @@
using UnityEngine;
using Unity.Netcode;
using TMPro;
public class PlayerHealth : NetworkBehaviour
{
[SerializeField] private int maxHealth = 100;
[SerializeField] private TMP_Text healthText;
public NetworkVariable<int> currentHealth = new NetworkVariable<int>(
100,
NetworkVariableReadPermission.Everyone,
NetworkVariableWritePermission.Owner
);
public override void OnNetworkSpawn()
{
currentHealth.OnValueChanged += OnHealthChanged;
if (IsServer)
{
currentHealth.Value = maxHealth;
healthText.text = $"Health: {maxHealth}";
}
}
private void OnHealthChanged(int _previousValue, int _newValue)
{
Debug.Log($"Health changed from {_previousValue} to {_newValue}");
healthText.text = $"Health: {_newValue}";
}
public void TakeDamage(int _damageAmount)
{
if (!IsServer) return;
currentHealth.Value -= _damageAmount;
if (currentHealth.Value <= 0)
{
Die();
}
}
private void Die()
{
OnDiedClientRpc();
}
[ClientRpc]
private void OnDiedClientRpc()
{
Debug.Log($"Player {OwnerClientId} died");
gameObject.SetActive(false);
}
public override void OnNetworkDespawn()
{
currentHealth.OnValueChanged -= OnHealthChanged;
}
}