Example #1
0
    void Update()
    {
        if (!alive)
        {
            return;
        }

        Vector2 dir = target.position - transform.position;

        if (dir.magnitude > seekDist)
        {
            Vector2 seek = Steering.Seek(transform.position, rigidbody2D.velocity, target.position, maxSpeed);
            seek = Steering.ObstacleSweep2D(transform.position, 1, seek, 10, avoidLayers);
            rigidbody2D.AddForce(seek, ForceMode.Force);
        }
        else
        {
            Vector3 flee = Steering.Flee(transform.position, rigidbody2D.velocity, target.position, maxSpeed);
            flee = Steering.ObstacleSweep2D(transform.position, 1, flee, 10, avoidLayers);
            rigidbody2D.AddForce(flee, ForceMode.Force);
        }
    }