34 lines
1.4 KiB
C#
34 lines
1.4 KiB
C#
using UnityEngine;
|
|
using Unity.Netcode;
|
|
|
|
public class PitZone : NetworkBehaviour
|
|
{
|
|
// Индекс ямы. Игрок с таким же индексом — её "хозяин" (защитник).
|
|
// Победа засчитывается тому, кто зашёл в ЧУЖУЮ яму (pitIndex != его индекс).
|
|
[SerializeField] private int pitIndex;
|
|
|
|
private void OnTriggerEnter(Collider _other)
|
|
{
|
|
if (!IsServer) return;
|
|
|
|
if (RoundManager.Current == null || !RoundManager.Current.IsRoundActive) return;
|
|
|
|
// Клон — засчитываем вход за его ОРИГИНАЛЬНОГО игрока.
|
|
// Проверять надо ДО PlayerHealth: у клона он тоже есть,
|
|
// но OwnerClientId клона — это сервер, а не игрок.
|
|
GhostPlayer _ghost = _other.GetComponentInParent<GhostPlayer>();
|
|
if (_ghost != null)
|
|
{
|
|
RoundManager.Current.OnPlayerEnteredPit(pitIndex, _ghost.OriginalOwnerId);
|
|
_ghost.GetComponent<PlayerHealth>().TakeDamage(999);
|
|
return;
|
|
}
|
|
|
|
PlayerHealth _playerHealth = _other.GetComponentInParent<PlayerHealth>();
|
|
if (_playerHealth == null) return;
|
|
|
|
RoundManager.Current.OnPlayerEnteredPit(pitIndex, _playerHealth.OwnerClientId);
|
|
|
|
_playerHealth.TakeDamage(999);
|
|
}
|
|
} |