본문 바로가기
IT Tip/유니티 강좌

[유니티강좌] 방향키로 오브젝트 움직이는 간단한 방법

by 연꽃연못 2020. 11. 19.
반응형

유니티로 게임을 만들려고 할때 제일 처음 필요한게 아닐까 싶어요. 플레이어든 오브젝트든 방향키로 움직이고 싶을때 하는 간단한 방법입니다. 아주 심플하게 만들거에요. ^^

 

키보드의 방향키 {←, →, ↑, ↓}로 오브젝트를 이동하는 방법

(동작확인은 동영상을 확인해 주세요. 뻑뻑해 보이지만 ^^ 실제론 그렇지 않아요. ^^ 동영상 캡쳐가 미숙해서.. ㅋㅋ)

 

 

먼저 새로운 프로젝트에서 움직여줄 큐브를 추가해 줍니다.

 

 

Hierarchy > 마우스오른쪽버튼클릭 > 3D Object > Cube 를 선택하세요. 

 

Scene에 작은 큐브가 하나 만들어 졌어요. 

 

혹시 저처럼 큐브가 검은색이면

 

 

메뉴바의 Window > Rendering > Lighting Settings 에 들어가세요.

 

 

아래와 같은 설정창이 하나 뜨는데 제일 밑에쪽에 체크박스에 체크를 해주세요. 

Auto Generate → 이 항목이에요. 이건 차차 나중에... ㅋㅋ

 

 

여튼 .. 다시 돌아와서 

큐브를 하나 생성했으면 이번에는 MoveController 스크립트를 하나 만들어 주세요. 

 

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

public class MoveController : MonoBehaviour
{
    void Update()
    {
        // 왼쪽으로 이동
        if (Input.GetKey (KeyCode.LeftArrow)) {
            this.transform.Translate (-0.1f,0.0f,0.0f);
        }
        // 오른쪽으로 이동
        if (Input.GetKey (KeyCode.RightArrow)) {
            this.transform.Translate (0.1f,0.0f,0.0f);
        }
        // 앞으로 이동
        if (Input.GetKey (KeyCode.UpArrow)) {
            this.transform.Translate (0.0f,0.0f,-0.1f);
        }
        // 뒤로 이동
        if (Input.GetKey (KeyCode.DownArrow)) {
            this.transform.Translate (0.0f,0.0f,0.1f);
        }
    }
}

 

간단하게 설명을 하자면... 

이 스크립트에는 Input클래스의 GetKey 함수Translate함수 두가지 기능을 사용했어요. 

Input클래스는 유저의 입력Input클래스를 이용하면 유저의 입력정보에 액세스 가능하게 하는것쯤으로 알아두시면 될까 싶어요. ^^
눌려졌을때 무엇을할까 정도인데 여기에 GetKey함수를 사용해서 유저가 사용하고 싶은 키보드의 키를 받아올거에요. 

 

아래 소스를 보면 왼쪽 방향키를 누르면 이 오브젝트의 X좌표를 -0.1f 만큼 이동해라 라는 뜻이에요. 

아주 쉽죠.. 헤헤 

 

if (Input.GetKey (KeyCode.LeftArrow)) 
{
	this.transform.Translate (-0.1f,0.0f,0.0f);
}

 

Translate함수는 위치를 이동해 주는 역할을 해요.

 

스크립트 작성이 다 끝나면 다시 작업화면으로 돌아오세요. 

작성한 스크립트를 큐브에 드레그해서 추가해주면 끝나요. 

 

 

플레이 버튼을 눌러서 동작 확인하면 간단하게 이동하는것을 확인할수 있을 거에요. 

가장 간단한 방법이기도 하고 기본적인 방법이기도 해요. 

 

참고로 GetKey로 다른 키를 조작하고 싶을 때는 아래를 참조해 주세요. 

 

KeyCode.A 알파벳 A키를 지정해요. 똑같은 방법으로 bcde등등 
KeyCode.Space 스페이스바를 지정
KeyCode.Keypad0 숫자키를 지정(엔터키 옆쪽에 있는 숫자키에요)
KeyCode.F1 F1키를 지정
KeyCode.Return 엔터키를 지정

 

Input클래스의 GetKey는 눌렀을 경우라는 것을 지정하는데 조금더 확장을 한다면... 아래와 같은 제어도 가능해요. 

 

GetKey 식별된 키가 눌러졌을때
GetDown 식별된 키를 누르고 있을때 true 값을 반환
GetUp 식별된 키를 눌렀다 떼었을때 true 값을 반환

세밀하게 뭔가를 제어하는건 아니지만 아주 심플하게 동작할수 있는 방법이에요. 

전 처음에 게임만든다고 저 동작을 했을때 정말.. 놀라웠어요. ㅋㅋㅋ

이게 이렇게 간단하게 움직인다고 엄청 기뻐했는데... 그때... 손을 놨어야 되는 거였나... 싶기도 할때가 있어요. ㅋㅋ

반응형

댓글