본문 바로가기
앱 만들기/유니티2D 게임 만드는 방법

유니티 키보드로 캐릭터 움직이기

by 나도처음이야 2024. 12. 2.
반응형

캐릭터 키보드로 움직이기

 

유니티 키보드로 캐릭터를 움직이기 위해서는

1. 우선 캐릭터를 씬뷰에 배치 시킨다.

2. 캐릭터에 Rigidbody2D 물리엔진과 충돌검사를 체크하는 Box Collider 2D를 추가한다.

3. 다음 방향키에 따라 움직이는 스크립트를 적용한다.

 

스크립트 의 주요내용으로는

Start() 함수에서는 Rigidbody2D에 중력의 영향을 받지 않도록 하기.

충돌시 회전하지 않도록 고정하기. 를 입력한다. 충돌시 회전하기 않기는 이 예제에서는 필수 코드는 아니다.

using UnityEngine;

public class onkeyPressMove : MonoBehaviour
{
    float x = 0;
    float y = 0;
    float speed = 2;
    bool flip = false;
    Rigidbody2D rd2D;

    // Start is called once before the first execution of Update after the MonoBehaviour is created
    void Start()
    {
        //중력의 영향을 받지 않도록 세팅함
        rd2D = GetComponent<Rigidbody2D>();
        rd2D.gravityScale = 0; // 중력을 0으로 세팅하기
        //충돌시 Z축으로 회전하지 않도록 고정하기
        rd2D.constraints = RigidbodyConstraints2D.FreezeRotation;
    }

    // Update is called once per frame
    void Update()
    {
        //초기화를 해주지 않으면 키를 누르지 않아도 계속해서 움직인다.
        x = 0;
        y = 0;

        //4방향 키 입력시, 좌표점 세팅하기 , 
        if (Input.GetKey("right")){
            x = speed;
            flip = false;
        }
        else if (Input.GetKey("left"))
        {
            x = -speed;
            flip = true;
        }
        else if (Input.GetKey("up"))
        {
            y = speed;
        }
        else if (Input.GetKey("down"))
        {
            y = -speed;
        }
    }
    //1초당 50번 반복함
    private void FixedUpdate()
    {
        //중력의 영향을 받으면서 움직이기 위해서 linearVelocity 를 사용한다.
        rd2D.linearVelocity = new Vector2(x, y);

        //좌우키 입력시 이미지 반전.
       this.GetComponent<SpriteRenderer>().flipX = flip;
    }
}

 

 

Update()에서는 

Input.GetKey() 가 핵심이다. 인자로 키보드 값을 입력받고 그에 따른 x,y 축 이동 범위를 세팅해준다.

키보드 입력 속도가 빠르기 때문에 Update()함수에서 체크를 해야한다.

FixedUpdate()는 초당 50번만 호출되는 고정값이므로, 키보드 입력값을 때때로 놓칠수 있다.

그래서 이 함수에서는 실제 이동하는 코드 와 좌우 반전 코드만 넣어준다.

 

Rigidbody 의 linearVelocity 에 Vector2(x,y) 값을 입력하여 좌우 상하 벡터 속도에 따라 캐릭터를 움직이는 것이 핵심이다.

좌우 반전은 SpriteRenderer 컴포넌트의 flipX 값을 true, false 로 상황에 맞게 세팅한다.

 

onkeyPressMove.cs
0.00MB

 

반응형

댓글