Testing client-server

This commit is contained in:
Nikita Kruglickiy 2024-03-19 17:56:12 +03:00
parent 44986e3f09
commit aeabb5344c
5 changed files with 45 additions and 15 deletions

View File

@ -19,6 +19,7 @@ namespace Characters.Enemy
[HideInInspector] public bool canAttack;
[SyncVar(hook = nameof(OnStateChanged)), HideInInspector] public EnemyState state = EnemyState.Idle;
[SyncVar, HideInInspector] public float aimRigWeight;
public readonly StateMachine<EnemyState> stateMachine = new StateMachine<EnemyState>();
@ -92,7 +93,12 @@ namespace Characters.Enemy
{
base.TakeDamage();
stateMachine.SetCurrentState(EnemyState.Stunned);
state = EnemyState.Stunned;
}
void OnStateChanged(EnemyState prevState, EnemyState newState)
{
stateMachine.SetCurrentState(newState);
}
}
}

View File

@ -14,11 +14,15 @@ namespace Characters.Enemy.States
public override void Enter()
{
if (!_enemy.isServer) return;
_enemy.SetAimRigWeight(1f);
}
public override void Update()
{
if (!_enemy.isServer) return;
_enemy.agent.destination = _enemy.target.position;
float distance = Vector3.Distance(_enemy.target.transform.position, _enemy.transform.position);
@ -40,12 +44,14 @@ namespace Characters.Enemy.States
}
else
{
_enemy.stateMachine.SetCurrentState(EnemyState.Idle);
_enemy.state = EnemyState.Idle;
}
}
public override void Exit()
{
if (!_enemy.isServer) return;
_enemy.target = null;
_enemy.SetAimRigWeight(0f);

View File

@ -15,22 +15,28 @@ namespace Characters.Enemy.States
public override void Enter()
{
if (!_enemy.isServer) return;
_enemy.SetSpeedMul(0f);
_enemy.animator.SetBool(DanceAnimHash, true);
}
public override void Update()
{
if (!_enemy.isServer) return;
var stateInfo = _enemy.animator.GetCurrentAnimatorStateInfo(0);
if (stateInfo.shortNameHash == DanceAnimHash && stateInfo.normalizedTime >= 1)
{
_enemy.stateMachine.SetCurrentState(EnemyState.Patrol);
_enemy.state = EnemyState.Patrol;
}
}
public override void Exit()
{
if (!_enemy.isServer) return;
_enemy.animator.SetBool(DanceAnimHash, false);
_enemy.SetSpeedMul(1f);
}

View File

@ -21,11 +21,14 @@ namespace Characters.Enemy.States
public override void Enter()
{
if (!_enemy.isServer) return;
_enemy.SetAimRigWeight(0f);
}
public override void Update()
{
if (!_enemy.isServer) return;
float sortDistance = float.MaxValue;
foreach (var player in _networkManager.alive)
@ -41,7 +44,7 @@ namespace Characters.Enemy.States
if (_enemy.target != null)
{
_enemy.stateMachine.SetCurrentState(EnemyState.Chase);
_enemy.state = EnemyState.Chase;
}
var remainingDistance = _enemy.agent.GetPathRemainingDistance();

View File

@ -20,18 +20,25 @@ namespace Characters.Enemy.States
}
public override void Enter()
{
if (_enemy.isServer)
{
_enemy.canAttack = false;
_enemy.target = null;
_enemy.SetSpeedMul(0f);
_enemy.GetComponent<NetworkAnimator>().SetTrigger(DamageAnimHash);
_enemy.hitVFX.Stop();
_enemy.hitVFX.Play();
_task = new Task(GetStunned());
}
else
{
_enemy.hitVFX.Stop();
_enemy.hitVFX.Play();
}
}
[Server]
public override void ReEnter()
{
_task.Stop();
@ -40,6 +47,8 @@ namespace Characters.Enemy.States
public override void Exit()
{
if (!_enemy.isServer) return;
_task.Stop();
_enemy.SetSpeedMul(1f);
@ -50,7 +59,7 @@ namespace Characters.Enemy.States
{
yield return new WaitForSeconds(6);
_enemy.stateMachine.SetCurrentState(EnemyState.Patrol);
_enemy.state = EnemyState.Patrol;
}
}
}