먼저 GameObject메뉴의 Create Empty를 선택하여 빈 게임 오브젝트를 생성합니다.

[ Ctrl + Shift + N ] 이것을 눌러서 만들어도 됩니다.


그런 다음에 생성된 GameObject를 이름은 이렇게 'InputManager'로 변경을 해줍니다.

그리고 Assets에 있는 Scripts에 C#스크립트 파일을 만들고 이렇게 입력을 합니다.

using UnityEngine;
using System.Collections;

public class InputManager : MonoBehaviour {
    Vector2 slideStartPosition;
    Vector2 prevPosition;
    Vector2 delta = Vector2.zero;
    bool moved = false;

    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
            slideStartPosition = GetCursorPosition();

        if (Input.GetButton("Fire1")) {
            if (Vector2.Distance(slideStartPosition, GetCursorPosition()) >= (Screen.Width * 0.1f))
                moved = true;
        }

        if (!Input.GetButtonUp("Fire1") && !Input.GetButton("Fire1"))
            moved = false;

        if (moved)
            delta = GetCursorPosition() - prevPosition;
        else
            delta = Vector2.zero;

        prevPosition = GetCursorPosition();
    }

    public bool Clicked()
    {
        if (!moved && Input.GetButtonUp("Fire1"))
            return true;
        else
            return false;
    }

    public Vector2 GetDeltaPosition()
    {
        return delta;
    }
    public bool Moved()
    {
        return moved;
    }
    public Vector2 GetCursorPosition()
    {
        return Input.mousePosition;
    }
}

그런 다음에 InputManager 게임 오브젝트에 InputManager 스크립트를 추가합니다.

---------------------------------------------------------------

유니티에선 Input클래스를 이용해 사용자의 입력을 가져옵니다.

Input클래스는 여러 입력 장치등 입력을 기능 이름[ex) Fire1]에 할당해 입력 상태를 가져올 수 있습니다.

이렇게 하면 입력 장치별로 따로 코드를 작성하지 않아도 같은 입력을 불러옵니다.

버튼을 눌렀는가를 감지하기 위해서는 이렇게 합니다.

if (Input.GetButtonDown("Fire1"))

{

//내용

}

조이스틱 같은 연속적인 값이 있는 입력일 때는 Input클래스의 GetAxis함수로 아날로그 값을 가져올 수 있다고 합니다.

[ 이것은 Edit -> Project Settings -> Input 를 순서대로 선택 / 그리고 Inspector에 표시되는 InputManager에서 설정 ]

 Horizontal 

 키보드의 좌우 방향키 또는 A와 D, 조이스틱의 가로 방향

 Vertical

 키보드의 상하 방향키 또는 W와 S, 조이스틱의 세로 방향

 Fire1

 마우스 좌 버튼, 키보드의 왼쪽 Ctrl, 조이스틱 버튼 0

 Fire2

 마우스 우 버튼, 키보드의 왼쪽 Alt, 조이스틱 버튼 1

 Jump

 키보드의 Space Bar, 조이스틱 버튼 3

이것은 기본 적인 셋팅입니다.

---------------------------------------------------------------

여기 부턴 Input 클래스의 주요 함수 입니다.

 GetButtonDown 

 버튼을 누르면 true, 그 외에는 false를 반환 즉, 버튼을 누른 프레임만 true를 반환

 GetButtonUp

 눌렀던 버튼이 다시 올라오면 true, 그 외에는 false를 반환 즉, 눌렀던 버튼이 다시 올라온 프레임만 true를 반환

 GetButton

 버튼을 누른 동안은 true, 눌렀던 버튼이 다시 올라오면 false를 반환

---------------------------------------------------------------

스틱 계의의 주요 함수 입니다.

GetAxis : 스틱의 기울기를 -1에서 1사이 값으로 나타내서 가져온다.

인수로는 Horezontal이란 Vertical을 많이 사용한다.

---------------------------------------------------------------

마우스 커서의 위친 Input클래스의 mousePosition속성으로 가져올 수 있습니다.

화면 왼쪽 아래 모서리가 (0, 0)이고 오른쪽 위 모서리가 ('화면의 세로 픽셀 수' -1, '화면의 가로 픽셀 수' -1)이 된다고 합니다.

Vector2 cursor = Input.mousePosition;

---------------------------------------------------------------

키보드 입력을 직접 가져오는 것도 가능하다고 합니다.

if (Input.GetKeydown(KeyCode.Esccap))

{ //ESC를 눌렀다.


블로그 이미지

이사가는 사람

안녕하세요 블로그를 옮기려고 생각하고 있습니다. 해당 블로그는 폐기하고 다음 다른 블로그에서 뵙도록 하겠습니다. 감사합니다!

,