Ejemplo n.º 1
0
    void spawnDrop(MobType mobType, Vector3 position)
    {
        ItemPickUps_SO item = getDrop(mobType);

        if (item != null)
        {
            Instantiate(item.itemSpawnObject, position, Quaternion.identity);
        }
    }
Ejemplo n.º 2
0
    public void CreatSpawn(int randomItem)
    {
        ItemPickUps_SO ip = itemDefinitions[randomItem];

        Vector3 spawnPosition = new Vector3(transform.position.x, transform.position.y, transform.position.z);

        spawnPosition += new Vector3(0f, 2f, 0f);
        Quaternion spawnRotation = new Quaternion(transform.rotation.x, transform.rotation.y, transform.rotation.z, transform.rotation.w);

        spawnRotation *= Quaternion.Euler(0f, 90f, 0f);

        ItemSpawned = Instantiate(ip.itemSpawnObject, spawnPosition, spawnRotation, transform);
        ItemSpawned.gameObject.layer = (int)Layer.Item;

        ItemMaterial          = ItemSpawned.GetComponent <Renderer>();
        ItemMaterial.material = ip.itemMaterial;

        ItemType = ItemSpawned.GetComponent <ItemPickUp>();
        ItemType.ItemDefinition = ip;
    }
Ejemplo n.º 3
0
    private List <GameObject> SpawnItems_SO(int quantity, List <ItemPickUps_SO> prefabsList)
    {
        List <GameObject> instances = new List <GameObject>(quantity);

        for (int i = 0; i < quantity; i++)
        {
            ItemPickUps_SO prefab          = prefabsList[Random.Range(0, prefabsList.Count)];
            GameObject     emptyGameObject = new GameObject(prefab.itemName);
            Vector3        position        = GetRandomPosition();
            GameObject     instance        = Instantiate(emptyGameObject, position, prefab.itemSpawnObject.transform.rotation);
            GameObject     item            = Instantiate(prefab.itemSpawnObject, instance.transform);
            item.AddComponent <ItemAnimation>();

            instance.tag = prefab.itemTag;
            item.tag     = prefab.itemTag;

            // if spawn inside something try to move it out
            int        maxTries  = 10;
            Collider[] colliders = new Collider[5];
            while (Physics.OverlapSphereNonAlloc(instance.transform.position, 1.0f, colliders) > 1 && maxTries > 0)
            {
                instance.transform.position = GetRandomPosition();
                maxTries--;
            }

            //add camera at final position
            if (prefab.itemCameraObject != null)
            {
                GameObject itemCamera = Instantiate(prefab.itemCameraObject, instance.transform);
                itemCamera.SetActive(false);
            }
            instances.Add(instance);

            DestroyImmediate(emptyGameObject);
        }

        instances[0].transform.GetChild(1).gameObject.SetActive(true);
        return(instances);
    }