- Home /
Question by
CupOfThings · Sep 06, 2014 at 02:09 PM ·
objectchangeselectdeselect
Deselect a selected object?
My script allows the player to select an object and then change is size and shape. I am wanting to be able to deselect the object when the player has clicked on a different object, but I dont know where to start. Could someone help me out?
var selected = false;
var SelectedGameObject : GameObject;
function Update (){
if(Input.GetMouseButtonDown(0)){
var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, hit, 100.0)){
SelectedGameObject = hit.collider.gameObject;
selected = true;
Wait(hit.collider.renderer);
}
}
if(selected)
{
Change();
}
}
function Change (){
if(Input.GetKeyDown(KeyCode.A)){
transform.localScale += Vector3(0.1,0,0);
}
if(Input.GetKeyDown(KeyCode.D)){
transform.localScale += Vector3(-0.1,0,0);
}
if(Input.GetKeyDown(KeyCode.W)){
transform.localScale += Vector3(0,0,0.1);
}
if(Input.GetKeyDown(KeyCode.S)){
transform.localScale += Vector3(0,0,-0.1);
}
}
function Wait(rend : Renderer){
var originalColor = rend.material.color;
rend.material.color = Color.yellow;
yield WaitForSeconds(2);
rend.material.color = originalColor;
}
Comment
Answer by Le-Capitaine · Sep 06, 2014 at 03:49 PM
You could get your selectables using GameObject.FindObjectsOfType, then iterate through them when one is clicked. Unfortunately I'm a C# bloke, so somebody will have to do the translating:
MyCoolScript[] allSelectables = (MyCoolScript) GameObject.FindObjectsOfType<MyCoolScript>();
foreach (MyCoolScript myCoolScript in allSelectables) {
myCoolScript.selected = false;
}
Answer by CupOfThings · Sep 08, 2014 at 08:24 PM
I fixed it by doing this :)
var selected = false;
var SelectedGameObject : GameObject;
function Update (){
if(Input.GetMouseButtonDown(0)){
var hit : RaycastHit;
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
if (Physics.Raycast (ray, hit, 100.0)){
SelectedGameObject = hit.collider.gameObject;
selected = true;
} else {
selected = false;
}
}
if(selected){
Change();
}
}
function Change (){
if(Input.GetKeyDown(KeyCode.A)){
SelectedGameObject.transform.localScale += Vector3(0.2,0,0);
}
if(Input.GetKeyDown(KeyCode.D)){
SelectedGameObject.transform.localScale += Vector3(-0.2,0,0);
}
if(Input.GetKeyDown(KeyCode.W)){
SelectedGameObject.transform.localScale += Vector3(0,0,0.2);
}
if(Input.GetKeyDown(KeyCode.S)){
SelectedGameObject.transform.localScale += Vector3(0,0,-0.2);
}
}