06
06

참고 : http://answers.unity3d.com/questions/603334/getting-inputgetaxis-to-execute-once.html


조이패드로 유아이를 조작할 때,


Input.GetAxis("Vertical")>0 로 조작한다면 조금만 눌러도 값이 프레임당 입력되기 때문에 유아이 조작이 힘들다.


따라서, 따로 변수를 둬서 처리하면 되는데 일단



GetAxis 와 달리 GetAxisRaw의 경우 -1, 0, 1만을 리턴해주는 함수이다.



  1. [선언부]
  2. private bool axisInUse = false;

[update]
  1. if (Input.GetAxisRaw("Vertical") == 1)
  2. {
  3. if (axisInUse == false)
  4. {
  5. axisInUse = true;
  6. // 내용1
  7. }
  8. }
  9. else if (Input.GetAxisRaw("Vertical") == -1)
  10. {
  11. if (axisInUse == false)
  12. {
  13. axisInUse = true;
  14. // 내용2
  15. }
  16. }

if (Input.GetAxisRaw("Vertical") == 0)
{
axisInUse = false;
}



(실제 적용 예)


    void SelectedButtonCount()

    {

if (Input.GetKeyDown (KeyCode.E) || Input.GetButtonDown ("Xiaomi_R1button")  || (Input.GetAxisRaw("Vertical") == -1 && axisInUse == false ) ) {

selectedButton++;

slectSound.Play ();

axisInUse = true;

}

else if (Input.GetKeyDown(KeyCode.Q) || Input.GetButtonDown("Xiaomi_L1button") || (Input.GetAxisRaw("Vertical") == 1 && axisInUse == false ))

        {

selectedButton--;

slectSound.Play ();

            if (selectedButton < 0)

                selectedButton = 2;

axisInUse = true;

        }


        selectedButton = selectedButton % 3;


if (Input.GetAxisRaw("Vertical") == 0)

{

axisInUse = false;

}

    }







COMMENT