- 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);
     }
     }
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                