Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

GUMI Dev

[유니티 Input] 키보드 입력 본문

Unity

[유니티 Input] 키보드 입력

GUMI Dev 2021. 11. 17. 09:34

GetAxis: 수평, 수직 버튼 입력을 받으면 float

 

우선 키보드를 눌러 횡 이동을 할 수 있도록 만들어보았다. 

Input Manager을 확인해보면 "Horizontal"은 키보드에서 횡(좌우 방향) 버튼으로 조작하는 것이 디폴트로 설정이 되어있다. 

디폴트값을 유지하며 스크립트를 작성하고 실행해보았다. 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LifeCycle : MonoBehaviour
{
    void Update()
    {
        {
            if (Input.anyKeyDown)
                Debug.Log("플레이어가 아무 키를 눌렀습니다. ");

            if (Input.GetButton("Horizontal"))
            {
                Debug.Log("횡 이동 중" + Input.GetAxis("Horizontal"));
            }
        }
    }
}

 

테스트를 해보았다. 

키보드에서 횡 방향의 키를 눌러야 횡 이동이 실행된다. 

종 방향 키를 누르면 횡 이동이 되지 않고 "플레이어가 아무 키를 눌렀습니다. "가 뜬다. 

 

횡 이동 버튼으로는 왼쪽과 오른쪽 두 버튼이 있다. 

오른쪽 키는 Positive이고 왼쪽 키는 Negative인 것이 디폴트로 설정되어있다. 

 

 

GetAxis 함수를 사용하여 스크립트를 작성하고 Play를 한 뒤 오른쪽 키를 누르면 0과 1 사이의 값이나 1이 나오고 왼쪽 키를 누르면 -1과 0 사이의 값이나 -1이 나온다. 즉, 가중치 값이 표시된다. 

 

 

오브젝트는 변수 transform을 항상 가지고 있다. 

GetAxis 대신 GetAxisRaw를 입력하면 가중치 없이 -1 혹은 1만 표시된다. 

 

0은 Horizontal에 해당되는 키인 오른쪽 방향키와 왼쪽 방향키를 동시에 누르거나 아무 키도 누르지 않았을 때의 상태다. 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LifeCycle : MonoBehaviour
{
    void Update()
    {
        {
            if (Input.anyKeyDown)
                Debug.Log("플레이어가 아무 키를 눌렀습니다. ");

            if (Input.GetButton("Horizontal"))
            {
                Debug.Log("횡 이동 중" 
                    + Input.GetAxisRaw("Horizontal"));
            }

        }
    }
}

 

이번에는 종과 횡 모두 설정해보았다. 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LifeCycle : MonoBehaviour
{
    void Update()
    {
        {
            if (Input.anyKeyDown)
                Debug.Log("플레이어가 아무 키를 눌렀습니다. ");

            if (Input.GetButton("Horizontal"))
            {
                Debug.Log("횡 이동 중 " //콘솔창 가독성을 위해 마지막에 간격을 둠
                    + Input.GetAxisRaw("Horizontal"));
            }

            if (Input.GetButton("Vertical"))
            {
                Debug.Log("종 이동 중 "
                    + Input.GetAxisRaw("Vertical"));
            }
        }
    }
}

 

그러면 키보드 방향키를 눌렀을 때 각각 콘솔 창에

 

키보드 오른쪽 방향키를 눌렀을 때, "횡 이동 중 1"

키보드 왼쪽 방향키를 눌렀을 때, "횡 이동 중 -1"

키보드 위쪽 방향키를 눌렀을 때, "종 이동 중 1"

키보드 아래쪽 방향키를 눌렀을 때, "종 이동 중 -1"

 

이라고 뜨게된다.