먼저 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에서 설정 ]
|
키보드의 좌우 방향키 또는 A와 D, 조이스틱의 가로 방향 |
|
키보드의 상하 방향키 또는 W와 S, 조이스틱의 세로 방향 |
|
마우스 좌 버튼, 키보드의 왼쪽 Ctrl, 조이스틱 버튼 0 |
|
마우스 우 버튼, 키보드의 왼쪽 Alt, 조이스틱 버튼 1 |
|
키보드의 Space Bar, 조이스틱 버튼 3 |
이것은 기본 적인 셋팅입니다.
---------------------------------------------------------------
여기 부턴 Input 클래스의 주요 함수 입니다.
|
버튼을 누르면 true, 그 외에는 false를 반환 즉, 버튼을 누른 프레임만 true를 반환 |
|
눌렀던 버튼이 다시 올라오면 true, 그 외에는 false를 반환 즉, 눌렀던 버튼이 다시 올라온 프레임만 true를 반환 |
|
버튼을 누른 동안은 true, 눌렀던 버튼이 다시 올라오면 false를 반환 |
---------------------------------------------------------------
스틱 계의의 주요 함수 입니다.
GetAxis : 스틱의 기울기를 -1에서 1사이 값으로 나타내서 가져온다.
인수로는 Horezontal이란 Vertical을 많이 사용한다.
---------------------------------------------------------------
마우스 커서의 위친 Input클래스의 mousePosition속성으로 가져올 수 있습니다.
화면 왼쪽 아래 모서리가 (0, 0)이고 오른쪽 위 모서리가 ('화면의 세로 픽셀 수' -1, '화면의 가로 픽셀 수' -1)이 된다고 합니다.
Vector2 cursor = Input.mousePosition;
---------------------------------------------------------------
키보드 입력을 직접 가져오는 것도 가능하다고 합니다.
if (Input.GetKeydown(KeyCode.Esccap))
{ //ESC를 눌렀다.