예제 #1
0
파일: Spawner.cs 프로젝트: JobsDAN/Diplom
    void SpawnUnit()
    {
        float x = 0, z = 0;

        while (Mathf.Abs(x) < size.x / 2 && Mathf.Abs(z) < size.z)
        {
            x = Random.Range(-size.x * 3, size.x * 3);
            z = Random.Range(-size.z * 3, size.z * 3);
        }

        Vector3    pos             = new Vector3(position.x + x, 0, position.z + z);
        Quaternion q               = new Quaternion();
        GameObject flockGameObject = Instantiate(flockPrefab, pos, q);
        Flock      flock           = flockGameObject.GetComponent <Flock>();

        flock.Owner = player;
        for (int i = -1; i <= 1; i++)
        {
            for (int j = -1; j <= 1; j++)
            {
                float      ux             = i * unitSize.x * 2;
                float      uz             = j * unitSize.z * 2;
                Vector3    offset         = new Vector3(ux, 0, uz);
                Vector3    unitPos        = pos + offset;
                GameObject unitGameObject = Instantiate(unitPrefab, unitPos, q);
                Unit       unit           = unitGameObject.GetComponent <Unit>();

                if (EquipClub)
                {
                    SkinnedMeshRenderer unitMesh = unitGameObject.GetComponentInChildren <SkinnedMeshRenderer>();
                    SkinnedMeshRenderer newMesh  = Instantiate(club.GetComponent <SkinnedMeshRenderer>());
                    newMesh.transform.parent = unitMesh.transform;
                    newMesh.bones            = unitMesh.bones;
                    newMesh.rootBone         = unitMesh.rootBone;
                }

                unit.SetPlayer(player);
                flock.AddUnit(unit, offset);
            }
        }
    }