Ejemplo n.º 1
0
 public override bool checkProceduralPrecondition(GameObject enemy)
 {
     wC    = GetComponent <WorldCondition>();
     lbr   = GetComponent <Labourer> ();
     agent = GetComponent <NavMeshAgent>();
     mts   = GetComponent <menuju_tempat_sembunyi>();
     // salah sasaran untuk index
     mis = GameObject.Find("enemy").GetComponent <misc> ();
     //timerM = lbr.timer;
     return(true);
 }
Ejemplo n.º 2
0
    public override bool checkProceduralPrecondition(GameObject agent)
    {
        lbr          = GetComponent <Labourer> ();
        mts          = GetComponent <menuju_tempat_sembunyi> ();
        navComponent = GetComponent <NavMeshAgent> ();
        mis          = GameObject.Find("enemy").GetComponent <misc> ();
        //masalahnya disini lho
        // bagaimana cara memilih target yang tidak di tutup oleh player
        // kalau player ada didepan enemy maka target yang dipilih harus menjauh dari player
        tamp = Random.Range(0, mis.tempat_sembunyi.Length - 1);
        if (tamp >= lbr.tampung)
        {
            tamp += 1;
        }

        target = mis.tempat_sembunyi [tamp].transform;
        return(target != null);
    }
Ejemplo n.º 3
0
    public override bool perform(GameObject enemy)
    {
        navComponent.SetDestination(target.position);
        if (Physics.Raycast(lbr.mata.position, transform.forward, lbr.jarakPandang, lbr.layerId2))
        {
            navComponent.speed = 7;
            tamp   = Random.Range(0, mis.enemy.Length);
            target = mis.tempat_sembunyi[tamp].transform;
            navComponent.SetDestination(target.position);
            return(false);
        }
        else
        {
            if (Mathf.Ceil(Vector3.Distance(transform.position, target.position)) == 5f)
            {
                print("cek");
                Vector3    pusat        = transform.position;
                Collider[] hitColliders = Physics.OverlapSphere(pusat, 10f);
                int        i            = 0;
                int        hitung       = 0;
                while (i < hitColliders.Length)
                {
                    menuju_tempat_sembunyi satu = hitColliders[i].GetComponent <menuju_tempat_sembunyi>();
                    if (satu)
                    {
                        if (satu.sembunyi)
                        {
                            hitung++;
                        }
                    }
                    menuju_tempat_sembunyi dua = hitColliders[i].GetComponent <menuju_tempat_sembunyi>();
                    if (dua)
                    {
                        if (dua.sembunyi)
                        {
                            hitung++;
                        }
                    }
                    i++;
                }

                if (hitung >= 2)
                {
                    print("Ngumpet liane!");
                    tamp   = Random.Range(0, mis.enemy.Length);
                    target = mis.tempat_sembunyi[tamp].transform;
                    navComponent.SetDestination(target.position);
                }
            }

            if (Vector3.Distance(transform.position, target.position) <= 3)
            {
                if (fs.enabled == true)
                {
                    if (timerM < 0)
                    {
                        sembunyi = true;
                        wC.dlek  = true;
                        //eksekusi
                    }
                    else
                    {
                        //--
                        //if<0
                        timerM = timerM - 1f * Time.deltaTime;
                        //reset 10
                    }
                }
            }

            Debug.Log("sukss");
            return(true);
        }

        //return true;
    }