본문 바로가기

Unity/Unity2D

Unity2D_Week1 : Move

①. Input.GetAxisRaw로 값을 받아와 그 값이 -1인지 1인지 판단하는 방법.

 

※ GetAxisRaw(Horisontal/Vertical )

Horizontal과 Vertical은 유니티에서 Edit -> Project Setting -> Input Manager -> Axes에 가보면 확인할 수 있다.

axisName에 의해 식별된 가상축의 값을 반환한다.
키보드와 조이스틱 입력값에 대해 -1에서 1까지의 값을 가진다.

public class Move : MonoBehaviour
{
    public int moveSpeed;
	
    // 매 프레임마다 1회씩 실행되는 함수.
    void Update()
    {
        float x = Input.GetAxisRaw("Horizontal");   // 좌, 우측 키보드 입력 (좌 : -1, X : 0, 우 : +1)
        float y = Input.GetAxisRaw("Vertical");     // 상, 하측 키보드 입력 (하 : -1, X : 0, 상 : +1)
        
        // ←
        if (x > 0)
        {
            transform.Translate(Vector3.right * moveSpeed * Time.deltaTime);
                   // ㄴ좌표이동     오른쪽으로 * 1만큼 이동
        }
        // →
        if (x < 0)
        {
            transform.Translate(Vector3.left * moveSpeed * Time.deltaTime);
            // ㄴ좌표이동         왼쪽으로 * 1만큼 이동
        }
        // ↓
        if (y > 0)
        {
            transform.Translate(Vector3.up * moveSpeed * Time.deltaTime);
            // ㄴ좌표이동        위쪽으로 * 1만큼 이동
        }
        // ↑
        if (y < 0)
        {
            transform.Translate(Vector3.down * moveSpeed * Time.deltaTime);
            // ㄴ좌표이동        아래쪽으로 * 1만큼 이동
        }
    }

 

②. GetAxis로 받아온 값을 Translate의 연산에 넣어주는 방법

public class Movem : MonoBehaviour
{
	public float moveSpeed;
    
	void Update()
   	{
	float x = Input.GetAxisRaw("Horizontal");
	float y = Input.GetAxisRaw("Vertical");
        
        // deltaTime = 프레임 사이의 간격 시간. 10프레임이라 치면 1초동안 10개의 프레임이 있다.
        // 0.1프레임과 0.2프레임 사이의 시간을 반환.
        transform.Translate(Vector3.right * x * moveSpeed * Time.deltaTime);
        transform.Translate(Vector3.up * y * moveSpeed * Time.deltaTime);
	}
}

오른쪽 화살표 키 입력시, Translate 연산에 1을 곱해주기 떄문에 양수(x축 기준 오른쪽)

 왼쪽 화살표 키 입력시,  Translate 연산에 -1을 곱해주기 때문에 음수(x축 기준 왼쪽) 방향으로 움직이게 된다.

 위쪽 화살표 키 입력시 양수, 아래쪽 화살표 키 입력시 음수.

 

'Unity > Unity2D' 카테고리의 다른 글

Unity2D_Week2 : Property  (0) 2021.12.09
Unity2D_Week1 : Coroutine  (0) 2021.12.06
Unity2D_Week1 : Raycast  (0) 2021.12.06
Unity2D_Week1 : ChargeJump  (0) 2021.12.06
Unity2D_Week1 : Jump  (0) 2021.12.06