예제 #1
0
    // Start is called before the first frame update
    void Start()
    {
        nestTimer.y           = nestTimer.x;
        nestAttractionTimer.y = nestAttractionTimer.x;

        water = GameObject.Find("water");
        if (bird)
        {
            this.name = "Birds";
        }
        else if (ship)
        {
            this.name = "Ships";
            height.x  = water.transform.position.y + 0.25f;
            height.y  = water.transform.position.y + 0.5f;
        }
        else if (fish)
        {
            this.name = "Fish";
            height.x  = water.transform.position.y - 4.0f;
            height.y  = water.transform.position.y - 1.0f;
        }

        Transform nest = transform.GetChild(0).GetChild(0);

        nest.position = new Vector3(nest.position.x, height.y - ((height.y - height.x) / 2), nest.position.z);

        for (int i = 0; i < numberOfBoids; ++i)
        {
            Boid newBoid = Instantiate(boidPrefab, transform);
            newBoid.Initialise(ship, randomSailColour, sailColour);
            newBoid.transform.position = new Vector3(Random.Range(transform.position.x + distance.x, transform.position.x + distance.y), Random.Range(height.x, height.y), Random.Range(transform.position.z + distance.x, transform.position.z + distance.y));
            newBoid.speed = Random.Range(speed.x, speed.y);
            newBoid.AcquireNests(listOfNests);

            if (bird)
            {
                newBoid.name = "Bird " + (i + 1).ToString();
            }
            if (ship)
            {
                newBoid.name = "Ship " + (i + 1).ToString();
            }
            if (fish)
            {
                newBoid.name = "Fish " + (i + 1).ToString();
            }

            boids.Add(newBoid);
        }

        distance *= 100;
    }