Beispiel #1
0
    void FixedUpdate()
    {
        SwarmConfigurator configurator = Settings.current.GetComponent <SwarmConfigurator>();

        maxSpeed         = configurator.maxSpeed;
        maxSteeringForce = configurator.maxSteeringForce;

        if (Input.GetMouseButton(0))
        {
            targetPosition = GetMousePosition();
        }
        else
        {
            targetPosition = transform.position + StraightWalkOffset();
        }
        transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(targetPosition - transform.position, Vector3.up), 0.08f);

        body.AddForce(Seek(targetPosition, true));


        if (configurator.isAvoidingWalls)
        {
            body.AddForce(configurator.avoidWallsScale * AvoidWalls());
        }
        if (configurator.isAvoidingNeighbors)
        {
            body.AddForce(configurator.avoidNeighborsScale * AvoidNeighbors());
        }
        if (configurator.isAligningWithNeighbors)
        {
            body.AddForce(configurator.alignWithNeighborsScale * AlignWithNeighbors());
        }
        if (configurator.isUsingCohesion)
        {
            body.AddForce(configurator.useCohesionScale * Cohesion());
        }
        if (configurator.isAvoidingPredators)
        {
            body.AddForce(configurator.avoidPredatorsScale * AvoidPredators());
        }
    }
Beispiel #2
0
 void Start()
 {
     skipInterval = 10;
     neighbors    = new List <Transform>();
     configurator = Settings.current.GetComponent <SwarmConfigurator>();
 }