Пример #1
0
    public void TestIfBarierSuitableToHide( UnitCore unit, Vector3 precalculated_toEnemyVector, ref float global_min, ref Barier barier )
    {
        var unit_position = unit.transform.position;

        //!!! CAUTION !!!
        // only work with 4 side points and 4 conner points !!!!
        float local_min = global_min;
        bool min_changed = false;
        Vector3 closest = Vector3.zero;
        Vector3 tmp;
        tmp = side_points[0].value - unit_position;
        if ( tmp.magnitude < global_min ) {
            closest = side_points[0].value;
            global_min = tmp.magnitude;
            min_changed = true;
        }
        foreach (var r in side_points[0].closest_conner_points) {
            tmp = r - unit_position;
            if ( tmp.magnitude < local_min ) {
                closest = r;
                local_min = tmp.magnitude;
                min_changed = true;
            }
        }

        tmp = side_points[2].value - unit_position;
        if ( tmp.magnitude < local_min ) {
            closest = side_points[2].value;
            local_min = tmp.magnitude;
            min_changed = true;
        }
        foreach (var r in side_points[2].closest_conner_points) {
            tmp = r - unit_position;
            if ( tmp.magnitude < local_min ) {
                closest = r;
                local_min = tmp.magnitude;
                min_changed = true;
            }
        }
        //!!! END CAUTION !!!

        if (min_changed) {
            if ( Physics.Linecast(closest, unit.transform.position, walls_mask) ) return;

            // if we must run over enemy to reach the barier then no
            if (Vector3.Angle (precalculated_toEnemyVector, closest -unit_position) > 50f) {
                barier = this;
                global_min = local_min;
            }
        }
    }
Пример #2
0
 void Start()
 {
     bar    = Barier.GetComponent <Barier> ();
     spawn  = Spawn.GetComponent <Spawner> ();
     myBody = GetComponent <Rigidbody2D> ();
 }
Пример #3
0
    public bool TryGettingAvailableBarier()
    {
        var b = GetClosestBarier ();
        if (b != null) {
            selected_barier = b;

        }
        return false;
    }