public IEnumerator PlaceObjects() { if (!edge) { int random = Random.Range(0, 5); Vector3 randomRot = new Vector3(0, random * 60, 0); LayerMask nodeLayer = LayerMask.GetMask("Node"); Vector3 raycastOrgin = transform.position; raycastOrgin.y += 2f; //spawn rocks for (int x = 0; x < levelRocks.Count; x++) { if (x == level) { if (Random.Range(0, 100) < levelRocks[x]) { if (!Physics.Raycast(raycastOrgin, Vector3.down, 4f, nodeLayer, QueryTriggerInteraction.Collide)) { Transform rockFolder = transform.parent.parent.Find("RockFolder").transform; GameObject o = Instantiate(rock, transform.position, Quaternion.Euler(randomRot), rockFolder); o.transform.localScale = o.transform.localScale * Random.Range(.8f, 1.2f); o.GetComponent <Target>().Place(); } } } } //spawn trees for (int x = 0; x < levelTrees.Count; x++) { if (x == level) { if (Random.Range(0, 100) < levelTrees[x]) { if (!Physics.Raycast(raycastOrgin, Vector3.down, 4f, nodeLayer, QueryTriggerInteraction.Collide)) { Transform treeFolder = transform.parent.parent.Find("TreeFolder").transform; GameObject Tree = Instantiate(tree, transform.position, Quaternion.Euler(randomRot), treeFolder); TreeStuff treeStuff = Tree.GetComponent <TreeStuff>(); treeStuff.SetTree(); treeStuff.Place(); } } } } yield return(new WaitForEndOfFrame()); } }
void PlantTree(Target target) { Destroy(target.gameObject); int random = Random.Range(0, 5); Vector3 randomRot = new Vector3(0, random * 60, 0); GameObject Tree; Tree = Instantiate(loadedResources.sapling, target.transform.position, Quaternion.Euler(randomRot)); TreeStuff treeStuff = Tree.GetComponent <TreeStuff>(); treeStuff.SetSapling(); RemoveReservation(); // free up a space jobTaskComplete = true; // set job task complete, so we get next job in queue }
IEnumerator ChopTree(Target target) { bool atTarget = true; TreeStuff tree = target.GetComponent <TreeStuff>(); while (tree.treeHP > 0 && !gameManager.night && atTarget) { if ((chicken.transform.position - target.transform.position).sqrMagnitude > 1f) { atTarget = false; } tree.treeHP--; yield return(new WaitForSeconds(tree.chopTime / 100 / gameManager.gameSpeed)); // wait for as long as one action takes } if (tree.treeHP <= 0 && !gameManager.night) { taskCreator.GetResource(chicken, Resource.Wood, target.gameObject); } RemoveReservation(); // free up a space jobTaskComplete = true; // set job task complete, so we get next job in queue }