사용자의 키 입력을 받아 오브젝트에 다양한 명령을 줄 수 있습니다.
사용자의 키 입력을 받는 방법은 몇가지가 있습니다. 각각 3개의 방법으로 나눠지는데,
✅ Down은 버튼이 눌렸을 때 실행되며
✅ Up은 버튼이 눌렸을 때 실행되고,
✅ up도 down도 아닌 디폴트(예 : GetKey)은 버튼이 눌리고 있을 때 계속 실행됩니다.
1. 아무키나 입력받음
anyKey / anyKeyDown
void Update()
{
// anyKey는 메서드가 아니기 때문에 인자가 없다.
if (Input.anyKey) {
Debug.Log("키를 누르고 있는 중...");
}
if (Input.anyKeyDown)
{
Debug.Log("키 Down");
}
}
2. 키보드 입력받음
GetKey / GetKeyDown / GetKeyUp
void Update()
{
// GetKey는 인자로 KeyCode를 줘야합니다.
if (Input.GetKeyDown(KeyCode.Return)) {
Debug.Log("Enter 키를 누르는 중...");
}
if (Input.GetKeyUp(KeyCode.W)) {
Debug.Log("W 키 Up!");
}
if (Input.GetKeyDown(KeyCode.Escape)) {
Debug.Log("ESC 키 Down!");
}
}
3. 마우스 입력받음
GetMouseButton / GetMouseButtonDown / GetMouseButtonUp
void Update()
{
// GetMouseButton는 인자로 정수 0~2(마우스 인덱스 번호)를 줘야합니다.
if (Input.GetMouseButton(0)) {
Debug.Log("마우스 왼쪽 누르는 중...");
}
if (Input.GetMouseButtonDown(1))
{
Debug.Log("마우스 우클릭!");
}
if (Input.GetMouseButtonUp(2))
{
Debug.Log("마우스 휠 클릭!");
}
}
4. 버튼 입력받음
GetButton / GetButtonDown / GetButtonUp
void Update()
{
//인자로 버튼 이름을 준다.
if (Input.GetButton("Jump")) {
Debug.Log("키를 누르고 있는 중...");
}
if (Input.GetButtonDown("Jump")) {
Debug.Log("Down!");
}
if (Input.GetButtonUp("Jump"))
{
Debug.Log("Up!");
}
}
Input Manager
GetButton의 경우 Input Manager을 통해 직접 button을 만들거나 삭제할 수 있습니다.
유니티 상단 메뉴 edit -> Project Settings -> Input Manager 탭 으로 이동
최상단 Size는 현재 존재하는 버튼의 갯수고, 버튼을 삭제하거나 추가하려면 Size를 수정하면 됩니다.
축 입력
GetAxis("Horizontal") / GetAxis("Vertical")
수평과 수직 이동 값을 받아 실수로 리턴해 줍니다. 중간값이 있으며, 1로 수렴합니다.
void Update()
{
if (Input.GetButton("Horizontal")) { //수평이동
float x = Input.GetAxis("Horizontal");
Debug.Log("수평이동 : " + x);
}
if (Input.GetButton("Vertical")) { //수직이동
float y = Input.GetAxis("Vertical");
Debug.Log("수직이동 : " + y);
}
}
GetAxisRaw("Horizontal") / GetAxisRaw("Vertical")
수평과 수직 이동 값을 받아 정수로 리턴해 줍니다. 중간값이 없고 1 또는 -1로 간결하게 뜹니다.
void Update()
{
if (Input.GetButton("Horizontal")) { //수평이동
float x = Input.GetAxisRaw("Horizontal");
Debug.Log("수평이동 : " + x);
}
if (Input.GetButton("Vertical")) { //수직이동
float y = Input.GetAxisRaw("Vertical");
Debug.Log("수직이동 : " + y);
}
}
Translate를 이용한 간단한 오브젝트 이동
void Update()
{
Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0); //GetAxis 값을 벡터 값으로 사용
//모든 오브젝트는 기본적으로 transform을 가지고 있기 때문에 this를 쓰지 않아도 본인을 가리킬 수 있습니다.
transform.Translate(vec); //Translate는 vector 값을 인자로 필요로 합니다.
}
'유니티 3D기본(Roll A Ball)' 카테고리의 다른 글
8. Time.deltaTime (델타타임) (0) | 2021.10.14 |
---|---|
7. Vector3 이동함수를 이용한 오브젝트 이동 (0) | 2021.10.14 |
5. 오브젝트 생명 주기(Life cycle) (0) | 2021.10.12 |
4. VS 코드 자동 완성 켜기, 유니티 개발 도구 설치, 테마 변경 (0) | 2021.10.12 |
3. C# 스크립트로 디버그 띄워보기 (0) | 2021.10.12 |