Bug Fixes
This commit is contained in:
@@ -20,6 +20,12 @@ public class PlayerHealth : NetworkBehaviour
|
||||
|
||||
private bool isServer;
|
||||
|
||||
// Короткое окно после респавна, когда вход в яму не засчитывается — страховка на случай,
|
||||
// если серверная позиция коллайдера не успела выйти из ямы (сетевая задержка).
|
||||
[SerializeField] private float pitImmunityDuration = 1f;
|
||||
private float pitImmuneUntil;
|
||||
public bool IsPitImmune => Time.time < pitImmuneUntil;
|
||||
|
||||
public void Init(bool _isServer)
|
||||
{
|
||||
isServer = _isServer;
|
||||
@@ -76,6 +82,7 @@ public class PlayerHealth : NetworkBehaviour
|
||||
GetComponent<PlayerShield>()?.SetShieldState(false);
|
||||
isDead.Value = false;
|
||||
currentHealth.Value = maxHealth;
|
||||
pitImmuneUntil = Time.time + pitImmunityDuration;
|
||||
RespawnClientRpc(_spawnPosition);
|
||||
}
|
||||
|
||||
@@ -97,15 +104,18 @@ public class PlayerHealth : NetworkBehaviour
|
||||
{
|
||||
SetPhysicsAndVisualsActive(true);
|
||||
|
||||
// Позицию задаёт только владелец — он авторитет над NetworkTransform (Owner authority)
|
||||
// Позицию задаёт ТОЛЬКО владелец — он авторитет над NetworkTransform (Owner authority).
|
||||
// На сервере/не-владельце трогать transform бессмысленно: NetworkTransform всё равно
|
||||
// перезапишет его синхронизацией от владельца. Серверную позицию догонит RoundManager
|
||||
// через WaitForPlayersAtSpawn перед стартом записи (иначе запись стартует в яме).
|
||||
if (!IsOwner) return;
|
||||
|
||||
TeleportOwner(_spawnPosition);
|
||||
Teleport(_spawnPosition);
|
||||
}
|
||||
|
||||
// Телепорт без интерполяции. CharacterController кэширует свою позицию,
|
||||
// поэтому его надо выключить на время установки трансформа.
|
||||
private void TeleportOwner(Vector3 _spawnPosition)
|
||||
private void Teleport(Vector3 _spawnPosition)
|
||||
{
|
||||
CharacterController _controller = GetComponent<CharacterController>();
|
||||
if (_controller != null) _controller.enabled = false;
|
||||
|
||||
Reference in New Issue
Block a user