// Update is called once per frame void Update() { if (Ragdolled) { ResetLaser(); if (!isDead && !StayRagdollTimer.Finished) { if (StayRagdollTimer.Update()) { holder.Ragdolled = false; } if (holder.Distance < 0.25f && holder.AngleDiff < 5) { UnRagdoll(); } } else if (isDead) { WaitAfterDeadTimer.Update(); } return; } if (FindTargetTimer.Update()) { FindTarget(); FindTargetTimer.Reset(); } ShootCooldown.Update(); if (UpdateTargetTimer.Update()) { UpdateTargetTimer.Reset(); if (Target) { LevelManager.Instance.CurrentPart.PathFinder.FindPath(AgentTransform.position, Target.position, NewPath); } } if (Target) { if (CanSeeTarget) { Shoot(); } } if (!Target || !CanSeeTarget) { ShootTimer.Reset(); ResetLaser(); } ColorValue = Mathf.Lerp(ColorValue, (CanSeeTarget ? 1f : 0f), Game.EnemyDelta * ColorChangeSpeed); EyeRenderer.materials[1].SetColor("_Color", Color.Lerp(NormalColor, AngryColor, ColorValue)); }
public override void Reset() { base.Reset(); FindTargetTimer.Reset(); StayRagdollTimer.Reset(); WaitAfterDeadTimer.Reset(); laser.gameObject.SetActive(false); SetTarget(null, true); BodyTransform.position = transform.position; AgentTransform.position = transform.position; UnRagdoll(); }