So I am making a 3D tower defense game and I have my node script on multiple nodes but when I click on one node to build the tower it builds the tower on the first node I created and it acts as one object.
Here is the script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Nodes : MonoBehaviour {
private Renderer rend;
private Color startColor;
private float time = 2.5f;
private bool textOnScreen;
private MeshRenderer render;
public TowerPlacement tower;
public GameObject node;
public Text cantbuild;
public Shop shop;
void Start ()
{
rend = node.GetComponent<Renderer>();
startColor =rend.material.color;
textOnScreen = false;
render = node.GetComponent<MeshRenderer>();
}
void Update()
{
if (shop.selected == true) render.enabled = true;
else render.enabled = false;
}
void OnMouseDown()
{
if(tower.canBuild == false)
{
cantbuild.gameObject.SetActive(true);
if (textOnScreen == false)
{
StartCoroutine(cantBuild());
}
}
else
{
if (shop.selected == true)
{
tower.towerBuilding();
shop.selected = false;
}
}
}
void OnMouseEnter()
{
if (tower.canBuild) rend.material.color = Color.green;
else
{
rend.material.color = Color.red;
}
}
void OnMouseExit()
{
rend.material.color = startColor;
}
private IEnumerator cantBuild()
{
textOnScreen = true;
yield return new WaitForSeconds(time);
cantbuild.gameObject.SetActive(false);
textOnScreen = false;
}
}