Esempio n. 1
0
    private void OnTriggerEnter(Collider other)
    {
        script_boidGroup bG = other.GetComponent <script_boidGroup>();

        if (bG && bG.GetTeam() == teamIndex && next)
        {
            bG.waypoint = next;
        }
    }
    private void Start()
    {
        group = CreateBoidGroup();

        for (int i = 0; i < count; i++)
        {
            group.AddToGroup(Color.white, 2.5f);
            group.boids[i].enabled = false;
            group.boids[i].GetComponent <Collider>().enabled = false;
        }

        group.enabled = false;
    }
Esempio n. 3
0
    private void Update()
    {
        GameObject target = CalculateTarget();

        if (target && canPanic)
        {
            transform.position = Vector3.MoveTowards(transform.position, target.transform.position, speed * 2.0f * Time.deltaTime);
        }
        else if (waypoint)
        {
            transform.position = Vector3.MoveTowards(transform.position, waypoint.transform.position, speed * Time.deltaTime);
        }

        for (int i = 0; i < boids.Count; i++)
        {
            if (boids[i] == null)
            {
                boids.RemoveAt(i);
            }
        }

        if (boids.Count <= 0)
        {
            manager.Destroy(team, gameObject);
        }
        else if (boids.Count <= maxCount * 0.5f && canPanic)
        {
            script_boidGroup closest = FindClosestGroup();

            if (closest)
            {
                for (int i = 0; i < boids.Count; i++)
                {
                    // might not be needed
                    if (boids[i])
                    {
                        boids[i].GetComponent <Rigidbody>().velocity = Vector3.zero;
                        //
                        closest.AddToGroup(boids[i]);
                        boids[i].transform.parent = closest.transform;
                    }
                }

                manager.Destroy(team, gameObject);
            }
        }
    }
    public void Spawn(int count)
    {
        if (prefab)
        {
            GameObject       bO = (Instantiate(prefab, transform.position, Quaternion.identity) as GameObject);
            script_boidGroup bG = bO.GetComponent <script_boidGroup>();

            bG.SetTeam(team);
            bG.waypoint = startingPoints[Random.Range(0, startingPoints.Count)];

            for (int i = 0; i < count; i++)
            {
                bG.AddToGroup(manager.GetTeamColor(team), 5.0f);
            }

            manager.AddToTeam(team, bO);
        }
    }
    private script_boidGroup CreateBoidGroup()
    {
        GameObject grp = new GameObject("Creep Group");

        grp.transform.position = transform.position;
        grp.layer = LayerMask.NameToLayer("Waypoints");

        script_boidGroup bG = grp.AddComponent <script_boidGroup>();

        bG.boidPrefab = prefab;
        bG.speed      = 1;
        bG.canPanic   = false;
        bG.speed      = prefabSpeed;

        grp.AddComponent <BoxCollider>().isTrigger = true;

        Rigidbody r = grp.AddComponent <Rigidbody>();

        r.useGravity  = false;
        r.constraints = RigidbodyConstraints.FreezePositionY;

        return(bG);
    }