lab2
This commit is contained in:
1 parent
e2c87a9ec8
commit
8151450cdc
12 files changed
+9769
No files matched your search
@@ -0,0 +1,39 @@
|
||||
using Code.Base;
|
||||
|
||||
namespace Code.Lab2
|
||||
{
|
||||
public class Arrive : AgentBehaviour
|
||||
{
|
||||
public float targetRadius;
|
||||
public float slowRadius;
|
||||
public float timeToTarget = 0.1f;
|
||||
|
||||
public override Steering GetSteering()
|
||||
{
|
||||
var steering = new Steering();
|
||||
var direction = target.transform.position - transform.position;
|
||||
var distance = direction.magnitude;
|
||||
float targetSpeed;
|
||||
|
||||
if (distance < targetRadius)
|
||||
return steering;
|
||||
if (distance > slowRadius)
|
||||
targetSpeed = Agent.maxSpeed;
|
||||
else
|
||||
targetSpeed = Agent.maxSpeed * distance / slowRadius;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a971b0661663493c886aaf7cb1b7c1a1
|
||||
timeCreated: 1770375702
|
||||
@@ -0,0 +1,42 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99c7dd3de75b4888b84e02afda7dcb8d
|
||||
timeCreated: 1770375985
|
||||
Reference in new issue
Block a user