앱 만들기/유니티2D 게임 만드는 방법

유니티 캐릭터 가로로 움직이는 방법(물리엔진 속도 적용)

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

 

캐릭터가 가로로 움직이는 방법은 하기 포스팅처럼, transform.translate() x 축 좌표를 이동하여 좌표점을 이동하는 방식이 있고 

 

유니티 캐릭터 수평(좌우)으로 이동시키는 방법

수평으로 캐릭터를 움직이기 위해서는캐릭터를 화면에 배치 한뒤, 스크립트에서 하기 코드를 작성한다. 1. Scene view 에 자동차를 배치하고, object 이름을 Car 로 변경한다2. Car 오브젝트에 MoveX 라

soo0100.tistory.com

 

이번 포스팅에서 다룰 물리엔진의 속도를 적용하는 방법이 있다.

그냥 가로로 이동하는 위와 같은 애니에서는 별반 차이가 없으나, 중간에 장애물이 존재한다던지 속도의 변화가 느껴지는 움직임이 필요할 때는 물리엔진을 적용한 방법이 실제 움직임처럼 자연스럽게 이동 표현이 가능하다.

1. 씬뷰에 차량을 등록한다. 

- 장애물이 될 벽은 그냥 옵션으로 세워두었다. 이 예제를 위해서도는 굳이 없어도 된다.

 

2. 물리엔진과 충돌검사 컴포넌트를 차에 등록한다.

Rigidbody2 D " 물리적인 움직임을 만들어주는 컴포넌트이다. 

이 녀석을 오브젝트에 적용하면 중력가속도 및 실생활에서의 움직임을 적용할 수 있다.

2D 게임을 만들기 위해서는 Rigidbody2D 를 적용하면 된다.

참고로 여기서는 gravity 중력과 Freeze Rotation Z 축 을 체크하여  계속해서 바닥으로 떨어지지 않게 그리고 사물에 부딪혀도 회전하지 않게 설정했다.

 

Box Collider2D  "충돌을 실행하고 체크하게 해주는 컴포넌트이다.

Box 타입 즉, 네모 타입의 충돌검사 영역이 자동차에 씌워졌다. 이 네모 영역이 다른 Collider 가 적용된 오브젝트에 부딪히면 충돌이 되었다는 이벤트가 올라온다. 충돌했다는 것을 감지할 수 있다.

 

3. 스크립트 작성

작성 스크립트를 자동차 오브젝트에 적용한다.

using UnityEngine;

public class MoveX_G : MonoBehaviour
{
    float speed = 2;
    Rigidbody2D rd;

    private void Start()
    {
        rd = GetComponent<Rigidbody2D>();
    }

    private void FixedUpdate()
    {
       //물리엔진에 속도 설정하기
       rd.linearVelocity  = new Vector2(speed, 0); 
    }
}

 

 rd = GetComponent<Rigidbody2D>();

자동차에 등록된 Rigidbody2 D를 가져온다.

 

 //물리엔진에 속도 설정하기
 rd.linearVelocity  = new Vector2(speed, 0); 

 

유니티에서 벡터는 힘과 방향을 나타내는 단위로 사용된다.

2D 게임이므로 Vector2 객체를 사용하며 x축에 speed 값을 주면, FixedUpdate() 함수가 1초에 50번 호출될 때마다 스피드 값만큼 x축으로 이동하게 된다.

반응형

댓글