- Home /
Detect OnMouseEnter/Exit/Down on childrens
Hey i need help with detecting OnMouseEnter/Exit/Down on childrens if that even possible. i have over 500 "nodes" where this script are attached to. and 500 of the same script is a little overkill i assume. i need help to get this script to work on all children and have the script it self attach to the empty gameobject if that even possible.
Sorry for bad english
public class BuildingTurret : MonoBehaviour
{
[Header("Color")]
public Color hoverColor;
//public Color startColor2;
[Header("Vector")]
public Vector3 posistionOffset;
[Header("Price On Turret")]
public int standardTurretLumber = 10;
public int standardTurretStone = 10;
private SwitchingWeapons switchingWeaponsScript;
private bool notEnoughStone = false;
private bool notEnoughLumber = false;
private GameObject notEnoughResource;
private GameObject turret;
private Renderer rend;
private Color startColor;
private TreeChopping resource;
void Start ()
{
rend = GetComponent<Renderer>();
startColor = rend.material.color;
// makes a reference to "TreeChopping" script
resource = GameObject.FindGameObjectWithTag("Player").GetComponent<TreeChopping>();
notEnoughResource = GameObject.FindGameObjectWithTag("Panel");
//Makes a reference to "SwitchingWeapon" Script
switchingWeaponsScript = GameObject.FindGameObjectWithTag("Player").GetComponent<SwitchingWeapons>();
}
void OnMouseDown()
{
if (!gameObject.GetComponent<BuildingTurret>().enabled)
{
return;
}
if (turret != null)
{
Debug.Log("You cant build there");
return;
}
if (resource.curLumber >= standardTurretLumber && resource.curStone >= standardTurretStone)
{
switchingWeaponsScript.audioPlaceStandardTurret.Play();
resource.curLumber -= standardTurretLumber;
resource.curStone -= standardTurretStone;
//build turret and reference to "BuildManager" script
GameObject turretToBuild = BuildManager.instance.GetTurretToBuild();
turret = Instantiate(turretToBuild, transform.position + posistionOffset, transform.rotation);
}
if (resource.curLumber < standardTurretLumber)
{
notEnoughLumber = true;
notEnoughResource.GetComponentInChildren<Text>().text = "Not enough lumber";
StartCoroutine(Delay(0.5f));
}
if (resource.curStone < standardTurretStone)
{
notEnoughStone = true;
notEnoughResource.GetComponentInChildren<Text>().text = "Not enough Stone";
StartCoroutine(Delay(0.5f));
}
if (notEnoughLumber && notEnoughStone)
{
notEnoughResource.GetComponentInChildren<Text>().text = "Not enough Stone or Lumber";
StartCoroutine(Delay(0.5f));
}
}
IEnumerator Delay(float delay)
{
yield return new WaitForSeconds(delay);
notEnoughResource.GetComponentInChildren<Text>().text = "Building";
}
void OnMouseEnter()
{
if (!gameObject.GetComponent<BuildingTurret>().enabled)
{
return;
}
rend.material.color = hoverColor;
}
void OnMouseExit()
{
if (!gameObject.GetComponent<BuildingTurret>().enabled)
{
//rend.material.color = new Color32(0xB6, 0xB2, 0xB2, 0xFF);
return;
}
rend.material.color = startColor;
}
Comment
Your answer
Follow this Question
Related Questions
Rotating a cube horizontal axis 1 Answer
How to end a cinematic camera cycle 1 Answer
onTriggerEnter is unclear to me... 3 Answers
[Help] hey i'm just a beginner... Problem with WEB GL build 0 Answers
Distribute terrain in zones 3 Answers