유니티-기초3

아따맘마·2020년 12월 21일
0

Unity

목록 보기
3/5

이제 키를 입력받아 물체를 움직여보자.
Unity에 built-in된 키를 이용하여 움직이려고 한다.

수평으로 움직이려면 Horizontal, 수직은 Vertical이다. 일반적인 방향키로 움직일 수도 있고, 게임에서처럼 w,a,s,d 키를 이용하여 움직일 수도 있다.
전에 했던것처럼 코딩을 짜보면

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

단순히 Horizontal 키를 입력받으면 '횡 이동중...'이라는 메세지만 보게 될 것이다.

여기서 GetAxis라는 함수를 추가해주면?

실수 값이 추가되는 것을 볼 수 있다.
GetAxis는 수평,수직을 입력받으면 float 타입의 값을 반환한다. GetAxisRaw를 추가하면 실수가 아닌 정수 1,-1을 반환한다.

이제는 직접 오브젝트를 이동시켜보자
여기에 Cube라는 오브젝트가 0,0,0에 존재한다.

아! 일단 물체를 이동시키는것에 있어서 벡터라는 변수에 대해 알아야 한다. 이미 알다시피 벡터는 스칼라에서 방향이 추가된 값이라고 알고 있다. 이 벡터라는 변수를 이용해서 물체를 이동시킬 것이다.
우선, 키보드로 입력하지 안않고 0,0,0에 존재하는 오브젝트를 5,5,0으로 이동시키려고 한다.

    void Start()
    {
        Vector3 vec = new Vector3(5, 5, 0); // x, y, z 초기화

        transform.Translate(vec);
    }

이 코드를 실행시키면 보다시피

5,5,0으로 이동된것을 알 수 있다. 위 코드를 보면 Vector3이라는 자료형을 사용했는데, 간단히 생각해서 3D는 Vector3, 2D는 Vector2를 이용하면 된다. 이 벡터 변수를 이용해서 오브젝트가 위치해있는 값에서 벡터 변수만큼의 값만큼 이동한다.
그러면 키보드로 입력받아서 오브젝트를 이동시키려면 어떻게 해야할까?
아까 배웠던 GetAxis함수를 이용하면 된다.

    void Update()
    {
        Vector3 vec = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0); // x, y, z 초기화

        transform.Translate(vec);
    }

벡터 변수안에 넣었던 숫자 대신에 GetAxix함수를 넣어줬다. x축은 'Horizontal' 입력키를 받고, y축은 'Vertical' 입력키를 받는다.
아 이건 Update함수 내에서 실행시킨다. Update함수는 1초마다 계속 실행되는 함수이다. 이제 Unity에서 키보드로 움직여보면 Cube 오브젝트가 움직인다.

profile
늦게 출발했지만 꾸준히 달려서 도착지점에 무사히 도달하자

0개의 댓글