public Vector3 Arrive(Vector3 target) { Vector3 desired = target - transform.position; float distance = desired.magnitude; //toTarget.Normalize(); if (drawGizmos) { LineDrawer.DrawTarget(target, Color.red); LineDrawer.DrawSphere(target, arriveSlowingDistance, 20, Color.yellow); } if (distance < 1.0f) { return(Vector3.zero); } float desiredSpeed = 0; if (distance < arriveSlowingDistance) { desiredSpeed = (distance / arriveSlowingDistance) * maxSpeed * (1.0f - arriveDeceleration); } else { desiredSpeed = maxSpeed; } desired *= desiredSpeed; return(desired - velocity); }
void Update() { if (drawGizmos) { LineDrawer.DrawSphere(transform.position, radius, 20, color); } }
public void Update() { if (drawGizmos) { LineDrawer.DrawSphere(transform.position, radius, 20, Color.yellow); } if (GetComponent <Boid>() != null) { foreach (GameObject o in boids) { o.GetComponent <Boid>().sphereCentre = transform.position; } } }
Vector3 Flee(Vector3 targetPos) { Vector3 desiredVelocity; desiredVelocity = transform.position - targetPos; if (desiredVelocity.magnitude > fleeRange) { return(Vector3.zero); } if (drawGizmos) { LineDrawer.DrawSphere(transform.position, fleeRange, 20, Color.yellow); } desiredVelocity.Normalize(); desiredVelocity *= maxSpeed; return(desiredVelocity - velocity); }