NextBot.cs
using CryptidHunt;
public sealed class NextBot : Component
{
[Property]
public NavMeshAgent Agent { get; set; }
[Property]
public SpriteRenderer SpriteRenderer { get; set; }
[Property]
public NextBotPlayer Target { get; set; }
[Property]
public Computer Computer { get; set; }
[Property]
public SoundEvent ScarySound { get; set; }
TimeUntil _nextSound = 0f;
protected override void OnFixedUpdate()
{
if ( !Target.IsValid() || !Agent.IsValid() )
return;
var distance = WorldPosition.Distance( Target.WorldPosition );
if ( Computer.IsValid() && Computer.Started)
{
Agent.MoveTo( Target.WorldPosition );
if ( distance <= 70f )
Target.Die();
var speed = MathX.Remap( distance, 500f, 3000f, 400f, 2000f );
Agent.MaxSpeed = speed;
Agent.Acceleration = speed * 4f;
}
if ( _nextSound && Computer.Playing && Computer.Started )
{
Sound.Play( ScarySound, WorldPosition ).Volume = MathX.Remap( distance, 100f, 1000f, 2f, 0.1f );
_nextSound = 1f;
}
}
}