- Home /
 
How to make door open and close with Input.GetButtonDown?
Hi to everyone I have a small problem, I have a door with animation, and two scripts for it. First one is for a Camera with a RayCasting, and a second controls door animation. When press interact button and looking at the door, door opens but not close when I push the button again, I tried to use else if command but it didn’t helped. Can some one please help me to find what I am missing.
First Script for a camera:
 public class DoorRayCast : MonoBehaviour
 {
     public float Doordistance = 1.5f;
     // Use this for initialization
     void Start()
     {
         
     }
   
     // Update is called once per frame
     void FixedUpdate()
     {
         if (Input.GetButtonDown("actButton"))
         {
             CheckRayCast();
             
         }
         
         
 
     }
     private void CheckRayCast()
     {
         Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
         RaycastHit data;
         if (Physics.Raycast(ray, out data, Doordistance))
         {
             GetComponent<DoorsActAnim>();
         }
         
     }
 }
 
               And the second one Door Animation Control
 public class DoorsActAnim : MonoBehaviour {
     private Animator DoorAnim;
     private AnimatorStateInfo BaseLayer;
     private AnimatorStateInfo currentBaseState;
     static int idleDoor = Animator.StringToHash("Base Layer.apartment_door_idle");
     static int openDoor = Animator.StringToHash("Base Layer.apartment_door_open");
     static int closeDoor = Animator.StringToHash("Base Layer.apartment_door_close");
     public float Doordistance = 1.5f;
 
     // Use this for initialization
     void Start()
     {
         DoorAnim = GetComponent<Animator>();
     }
     void FixedUpdate () {
         currentBaseState = DoorAnim.GetCurrentAnimatorStateInfo(0);
         if (Input.GetButtonDown("actButton"))
         {
             DoorAnim.SetTrigger("Open");
             
         }
         else if (Input.GetButtonDown("actButton"))
         {
             DoorAnim.SetTrigger("Close");
         }
         
     
         
     }
     
 }
 
              Answer by allenallenallen · Aug 11, 2015 at 01:53 PM
Both if and else if conditions are exactly the same; that's the problem.
 if (Input.GetButtonDown("actButton")){
     if (/*Current animation state is closed*/)
         DoorAnim.SetTrigger("Open");
     else 
         DoorAnim.SetTrigger("Closed");
 
 }
 
              $$anonymous$$any thanks to you it worked, you are my savior
Your answer
 
             Follow this Question
Related Questions
Have damage done to player via colliders, only a certain amount of times? 1 Answer
How would I set up this blend tree for my 2d game 0 Answers
Animations interupting Aim-Script 0 Answers
Have some minor problems. Cant tell if its a script issue or a animator issue. 1 Answer
Issue trying to animate multiple models with same controller and script 0 Answers