using Code.Base; namespace Code.Lab2 { public class Leave : AgentBehaviour { public float escapeRadius; public float dangerRadius; public float timeToTarget = 0.1f; public override Steering GetSteering() { var steering = new Steering(); var direction = transform.position - target.transform.position; var distance = direction.magnitude; if (distance > dangerRadius) return steering; float reduce; if (distance < escapeRadius) reduce = 0f; else reduce = distance / dangerRadius * Agent.maxSpeed; var targetSpeed = Agent.maxSpeed - reduce; var desiredVelocity = direction; desiredVelocity.Normalize(); desiredVelocity *= targetSpeed; steering.Linear = desiredVelocity - Agent.velocity; steering.Linear /= timeToTarget; if (!(steering.Linear.magnitude > Agent.maxAcceleration)) return steering; steering.Linear.Normalize(); steering.Linear *= Agent.maxAcceleration; return steering; } } }