void addTrees() { Vector3 facing = Vector3.zero; Vector3 spawn = Vector3.zero; Vector3 absSpawn = Vector3.zero; for (int i = 0; i < treeNum; i++) { voxel coord = Surface [Random.Range(0, Mathf.RoundToInt(Surface.Count - 1))]; string face = coord.face; float refCord = 0; if (coord.ident == "front") { facing = Vector3.back; refCord = coord.absLoc.z; } if (coord.ident == "back") { facing = Vector3.forward; refCord = coord.absLoc.z; } if (coord.ident == "left") { facing = Vector3.right; refCord = coord.absLoc.x; } if (coord.ident == "right") { facing = Vector3.left; refCord = coord.absLoc.x; } bool goAhead = true; Vector3 idenspawn = coord.idenLoc + facing; voxel treeVox = spaces [Mathf.RoundToInt(idenspawn.x), Mathf.RoundToInt(idenspawn.y), Mathf.RoundToInt(idenspawn.z)]; treeVox.face = face; foreach (var vox in getNeighbours(treeVox)) { if (vox.ident == "tree") { goAhead = false; treeNum += 1; Debug.Log("hit"); break; } } coord.assignedToCube.AddComponent <treeScript> (); treeScript tree = coord.assignedToCube.GetComponent <treeScript> (); tree.leafy = leaf; tree.itemlib = itemlib; tree.loggy = log; tree.seed = coord; tree.tring = i; } }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0) && !PauseAndOptionsManager.gameIsPaused) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit)) { if (hit.collider.tag == "Player") { selectedTree = hit.collider.GetComponent <treeScript>(); foreach (treeScript t in trees) { t.isSelected = false; } selectedTree.isSelected = true; } } } }
private void OnCollisionStay(Collision collision) { if (collision.collider.CompareTag("treetochop") && behaviourState != 2 && behaviourState != 3 && behaviourState != 4) { behaviourState = 1; //collision.collider.gameObject.tag = "Untagged"; // Remove the tag so that FindTarget won't return it currentTree = collision.collider.gameObject; ts = currentTree.GetComponent <treeScript>(); //Destroy(collision.collider.gameObject); //target = FindTarget(); } else if (collision.collider.CompareTag("generator")) { gs = generator.GetComponent <generatorScript>(); behaviourState = 3; } rb.angularVelocity = Vector3.zero; rb.velocity = Vector3.zero; }
public void CreateTrees() { for (int i = 0; i < totalTrees; i++) { GameObject thisTree; // getting our current tree we're making! int randomNum; if (i == 0) { thisTree = Instantiate(weak_treePrefab, weakTreePos, Quaternion.identity, transform) as GameObject; randomNum = 0; } else { randomNum = Random.Range(0, 2); // randomize if it's a weak or strong tree! if (randomNum == 0) // 0 means weak { thisTree = Instantiate(weak_treePrefab, weakTreePos, Quaternion.identity, transform) as GameObject; } else // other nums are strong! { thisTree = Instantiate(strong_treePrefab, strongTreePos, Quaternion.identity, transform) as GameObject; } } treeObjects.Add(thisTree); //adding new tree object to the list! if (thisTree.GetComponent <treeScript>() != null) { treeScript thisTree_SCR = thisTree.GetComponent <treeScript>(); treeScripts.Add(thisTree_SCR); // adding tree script to list! thisTree_SCR.InitializeTree(i, randomNum); } else { Debug.Log("ERROR!"); } } }