반응형

안녕하세요

 

오브젝트를 키보드로 이동하는 방법을 예제를 통해 알아보도록 하겠습니다.

 

새로운 프로젝트를 만듭니다.

 

그리고 바닥 오브젝트를 생성합니다.

 

Hierachy에서 오른쪽 클릭하여 3D Object - Plane로 생성합니다.

 

다음은 움직일 오브젝트를 생성합니다.

 

Hierachy에서 오른쪽 클릭하여 3D Object - Cube로 생성합니다.

 

그 후 Plane위에 Cube가 위치하도록 y축 값을 변경합니다.

 

다음과 같이 변경하였습니다.

그리고 Cube Object 스크립트를 추가합니다.

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Mover : MonoBehaviour
{
 
    float m_fSpeed = 5.0f;
    
    void Start()
    {
        
    }
 
    void Update()
    {
        float fHorizontal = Input.GetAxis("Horizontal");
        float fVertical = Input.GetAxis("Vertical");
 
        transform.Translate(Vector3.right * Time.deltaTime * m_fSpeed * fHorizontal, Space.World);
        transform.Translate(Vector3.up  * Time.deltaTime * m_fSpeed * fVertical, Space.World);
    }
}
 
 

 

Input.GetAxis("Horizontal");와 Input.GetAxis("Vertical"); 는 수평과 수직 입력값을 받아옵니다.

 

Input에 관한 키값은 Edit - Project Settings를 통해 설정할 수 있습니다.

 

기본적으로 Horizontal에는 방향키 왼쪽, 오른쪽 키와 'a'와 'd'키로 되어있고,

Vertical에는 방향키 아래, 위 키와 's'와 w 키로 되어있습니다.

 

왼쪽 키 혹은 a 키를 입력했을 경우에는 fHorizontal에 -1이 대입되고, 오른쪽 키 혹은 d키를 입력할 경우에는 fHorizontal에 1이 대입됩니다.

그리고, 아래키 혹은 s키를 입력할 경우에 fVertical에 -1이 대입되고, 위키 혹은 w키를 누를 경우 1이 대입됩니다.

 

 

다음 Translate함수를 통해 이동을 하게 되는데 다음과 같이 구현을 했습니다.

transform.Translate(Vector3.right * Time.deltaTime * m_fSpeed * fHorizontal, Space.World);

transform.Translate(Vector3.up  * Time.deltaTime * m_fSpeed * fVertical, Space.World);

입력값이 없으면 fHorizontal나 fVertical가 0이기 때문에 이동을 안하게 되고 입력값이 들어오면 값만큼 이동을 하게 됩니다.

 

 

위에 코드는 아래, 위, 왼쪽, 오른쪽으로 이동하도록 구현하였는데, 만약에 앞, 뒤, 왼쪽, 오른쪽으로 오브젝트를 이동하고자 한다면

transform.Translate(Vector3.up  * Time.deltaTime * m_fSpeed * fVertical, Space.World);

이 코드를 

transform.Translate(Vector3.forward  * Time.deltaTime * m_fSpeed * fVertical, Space.World);

이렇게 변경하면, 앞, 뒤로 이동하게 됩니다.

반응형

+ Recent posts