void spawnDrop(MobType mobType, Vector3 position) { ItemPickUps_SO item = getDrop(mobType); if (item != null) { Instantiate(item.itemSpawnObject, position, Quaternion.identity); } }
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; }
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); }