Unity C# > UnityEngine : Input

Date:     Updated:

카테고리:

태그:

공부하면서 알게된 것만 정리합니다.😀

👩‍🦰 Input

UnityEngine에서 제공하는 입력과 관련된 집합. 키보드, 모바일, 조이스틱의 입력을 받을 수 있는 여러 함수들의 집합.

🚀 변수/프로퍼티

✈ mousePosition

  • 현재 마우스 위치를 (0, 0) ~ (Screen.width, Screen.height) 로 나타낼 수 있는 픽셀 좌표(Screen)로서의 나타낸다.
  • 즉, 현재 마우스 위치를 해상도를 기준으로 한 화면상의 좌표로 나타낸다.
    • 좌측 하단을 (0, 0) 우측 상단을 (Screen.width, Screen.height)으로 한 화면 좌표계


✈ anyKey

- 어떤 키보드의 키 혹은 마우스 버튼이 눌린 상태인지를 확인한다.
- 어떤 키던지 마우스 클릭이 들어왔던지 일단 입력이 들어오면 값은 True다.
- 읽기 전용 이다.


✈ KeyCode

  • 키보드의 각 자판들은 정수와 매칭된다.
    • 그러나 자판에 매칭되는 정수를 모두 외우기는 힘듬. 119는 W.. 이런식으로 외울 수가 없음.
    • KeyCode 클래스에 각 키보드 자판들과 정수가 연결되어 있으니 예를 들어 KeyCode.W 이런식으로 갖다 쓰기만 하면 된다.

사실 Input 에 속해있는 프로퍼티는 아니지만 Input과 함께 쓰이기에 넣음


🚀 함수

✈ GetKey, GetKeyUp, GetKeyDown

public static bool GetKey(string name);

  • 뫄뫄 키보드 입력이 들어오면 True를 리턴한다.
  • 뫄뫄 키보드 입력이 들어오지 않는 상태면 False를 리턴한다.
  • ex) Input.GetKey(KeyCode.W) : W키가 입력되면 True 리턴
  • GetKey : 키를 누르는 동안
  • GetKeyUp : 키를 떼는 순간
  • GetKeyDown : 키를 누르는 순간


✈ GetMouseButton, GetMouseButtonUp, GetMouseButtonDown

public static bool GetMouseButton(int button);

  • GetMouseButtonDown : 마우스를 누르는 순간
    • GetMouseButtonDown(0) : 마우스 좌클
    • GetMouseButtonDown(1) : 마우스 우클


✈ GetAxis

public static float GetAxis(string axisName);

-1.0f ~ 1.0f 까지의 범위의 값을 리턴한다. float 값을 리턴하기 때문에 부드러운 이동이 필요한 경우에 사용된다.

  • GetKey와 다르게 문자열을 매개변수로 받으며 float 값을 리턴한다.
    • ex) “Horizontal”
    • 수평 방향에 대해서 키보드나 조이스틱으로 입력을 했을때 -1 ~ +1 사이의 float 값을 리턴한다.
      • 즉 키보드 수평방향에 대응되는 키들이 “Horizontal”에 맵핑되어 있다.
      • A와 D가 맵핑 되어 있다.
    • “Fire”, “Jump”, “Crunch” 등등..
    • GetKey보다 좋은 점
      • 만약 점프 키를 Space bar가 아닌 윗쪽 방향키로 바꾸고 싶다면?
        • GetKey의 경우 직접 코드로 찾아가서 GetKey(KeyCode.SpaceBar)를 Getkey(KeyCode.Up)으로 바꾸는 수고를 감수해야 한다.
          • 그런데 GetAxix를 사용한다면 점프 동작에 대한 유니티 상에서 "Jump"에 Space bar가 할당 되있는 것을 그냥 Up으로 바꿔주면 땡이다.
            • 직접 GetKey처럼 코드 찾아가서 Input.GetAxis("Jump") 코드를 수정하지 않아도 되는 것이다!
            • 그냥 유니티 Project Settings 에서 바꾸기만 하면 된다.
    • 문자열에 맵핑된거 바꾸는 방법
      • 유니티 - 메뉴 - Edis - Project Settings - Input 에서 바꿀 수 있다.
      • 현재 Horizontal은 왼쪽 방향키(left), 오른쪽 방향키(right), 그리고 보조로 A키, D키가 설정 되어있다.
        • Negative : left, A
        • Positive : Right, D
    • float 값을 리턴하는 이유 : 조이스틱 때문
      • Negative 키는 -1.0f ex) “Horizontal”에서 A키
      • Positive 키는 1.0f ex) “Horizontal”에서 D키
      • 아무것도 안누를 땐 0.0f
      • 이렇게 -1 ~ 1 사이의 float 실수값을 반환하는데 이렇게 하는 이유는 조이스틱 입력 때문!
        • 조이스틱은 키보드와 다르게 딱 눌렀다 뗏다 같이 이분법적으로 생각할 수가 없기 때문.
        • 조이스틱은 아주 살짝만 밀거나 많이 밀거나 미는 정도에 따라 입력의 정도가 다른 것!
          • 오른쪽으로 살짝 밀면 0.2 이런게 가능
  • Input.GetAxis(“Horizontal”)
  • Input.GetAxis(“Vertical”)
  • Input.GetAxis(“Mouse X”)
  • Input.GetAxis(“Mouse Y”)
  • Input.GetAxis(“Fire”)
  • 등등 그 밖에도 project settings - input - axis 에서 확인할 수 있다.


✈ GetAxisRaw

public static float GetAxisRaw(string axisName);

-1, 0, 1 셋 중 하나가 리턴된다. 키보드처럼 즉시 반응해야 한다면 GetAxisRaw 를 사용하는게 낫다.

GetAxis 는 조이스틱에, GetAxisRaw 는 키보드에 적합.

  • 사용 방법은 Input.GetAxis와 같다.
  • -1, 0, 1 셋 중 하나가 리턴되므로
    • Input.GetAxisRaw(“Horizontal”)
      • A 입력시 -1 리턴
      • 입력 X시 0 리턴
      • D 입력시 1 리턴
    • Input.GetAxisRaw(“Vertical”)
      • S 입력시 -1 리턴
      • 입력 X시 0 리턴
      • W 입력시 1 리턴
    • Input.GetAxisRaw(“Mouse X”)
      • 마우스가 아래로 움직였으면 -1 리턴
      • 마우스가 위아래로 움직이지 않았으면 0
      • 마우스가 위로 움직이면 1
    • Input.GetAxisRaw(“Mouse Y”)
      • 마우스가 왼쪽으로 움직였으면 -1 리턴
      • 마우스가 좌우로 움직이지 않았으면 0
      • 마우스가 오른쪽로 움직이면 1


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UnityDocs 카테고리 내 다른 글 보러가기

댓글 남기기