- Home /
Toggle on click.
The following script is running an object on object off effect. The problem is when I click on the object it turns it on then right back off. I want it to turn it on the first time you click it then off the next time you click it. That way it works like a switch and you can do this as much as u want.
using UnityEngine;
using System.Collections;
public class ChangeWeather : MonoBehaviour
{
public bool active = true;
private Transform child;
public GameObject child2;
public bool weatherMan = false;
void Update ()
{
if(weatherMan)
{
if(Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit))
{
if(hit.collider.tag == "WorldBlocks")
{
if(active == true)
{
foreach(Transform child in hit.transform)
{
child.renderer.enabled = true;
print ("I am On");
}
active = false;
}
if(active == false)
{
foreach(Transform child in hit.transform)
{
child.renderer.enabled = false;
print ("I am Off");
}
active = true;
}
}
}
}
}
}
}
Answer by M1k4 · Jul 16, 2013 at 01:35 PM
Try to use if/else and not just if/if on line 25 > 50.
Answer by creighcl · Jul 16, 2013 at 02:08 PM
On line 25, if active == true, it sets it to false, then on line 39 it will see that its now false and flip it back to true.
You've got this right, just change to:
if(active){
//what to do when active
foreach(Transform child in hit.transform) {
child.renderer.enabled = true;
print ("I am On");
}
active = false;
} else {
//what to do when inactive
foreach(Transform child in hit.transform) {
child.renderer.enabled = false;
print ("I am Off");
}
active = true;
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Dress Problem 0 Answers
Line Renderer Positioning Problem 1 Answer
Rays and tags help? 1 Answer