유니티 오브젝트 추가하고 애니메이션 적용하기

zoo._.0424

·

2022. 6. 23. 16:00

반응형

유니티 오브젝트 추가하고 애니메이션 적용하기

이번 포스팅에서는 유니티를 이용해 오브젝트를 추가하고 그 오브젝트에 애니메이션을 적용하는 방법을 알아보겠습니다.

제가 만들 게임은 플래피 버드라고 하는 게임을 약간 변형한 게임입니다. 플래피 버드는 아래 사진과 같이 화면을 터치해 캐릭터를 점프시켜서 장애물 사이를 통과하는 아주 간단한 게임입니다.

영상은 아래 조코딩님 유튜브 채널을 참고하였습니다. (바로가기)

저는 이 게임 캐릭터를 새 대신 제가 좋아하는 오리를 사용해서 만들어 보겠습니다.

일단 저번에 설치했던 유니티를 실행시켜서 새로운 프로젝트를 만들어줍니다. 유니티가 설치가 안 돼있다면 아래 포스팅 참고 부탁드립니다. 유니티 설치하는 방법(바로가기)

 

유니티 설치하는 방법 [유니티로 게임 개발하기 1]

유니티 설치하는 방법 [유니티로 게임 개발하기 1] 유니티로 게임 개발하기 시리즈 첫번째 포스팅입니다. 이번 포스팅에서는 유니티를 설치하고 게임을 만들기 위한 사전 설정을 하는 법에 대하

kgokapc.tistory.com


1.프로젝트 만들기

여기서 오른쪽 위의 New project를 눌러줍니다.

2D로 만들 것이기 때문에 2D를 선택하고  Project name을 자신이 원하는 이름으로 설정하고 Create project를 누릅니다.

그럼 이런 화면이 나올 것입니다. 저 중에 만약 나오지 않는 창이 있다면 상단의 '창' 메뉴를 누른 뒤 원하는 창을 열어주시면 됩니다.

2. 오브젝트 추가하기

이번에는 이미지를 넣어보겠습니다. 원하는 이미지를 프로젝트의 Assets 부분에 끌어다 놓습니다.

저는 이렇게 3개의 이미지를 불러왔습니다. 나중에 애니메이션을 넣기 위해서죠.

이제 게임에 이 이미지들을 넣겠습니다. 이미지 중 하나를 골라 SampleScene 구역에 끌어다 놓습니다.

그럼 Main Camera와 끌어온 이미지가 게임 화면에 추가됩니다. 이 이미지는 앞으로 오브젝트로 부르겠습니다.

이 상태로 게임을 실행하면 게임이라는 창이 하나 나올 것입니다. 그걸 옆으로 끌어 씬과 게임을 같이 볼 수 있게 놓아주세요.

저는 화면 비율을 이미 설정을 해 놓았지만 처음 만들 때는 화면의 비율이 스마트폰 세로 비율과 다를 것입니다.

그래서 스마트폰 세로 비율에 맞게 화면을 조정해주도록 하겠습니다.

위의 16:9 Aspect를 눌러줍니다. 그럼 아래쪽에 + 모양 버튼을 눌러주고, label(레이블)은 자신이 원하는 이름으로 정해주시고 Type(타입)은 Fixed Resolusion(고정 해상도) 대신 Aspect Ratio(종횡비)로 설정해주세요. Width & Height(너비 및 높이)는 9:16으로 설정해주시면 이런 화면으로 변하게 됩니다.

3. 애니메이션 적용하기

이제 이 오리에게 애니메이션을 넣어줄 겁니다. 상단 메뉴에서 창-애니메이션-애니메이션을 눌러서 애니메이션 창을 열어주시고 그 창을 아래쪽 프로젝트 옆에 놓아주세요. 그럼 애니메이션을 생성하겠습니다.

추가한 오브젝트를 클릭하여 애니메이션 창에서 애니메이션을 생성해주세요. 그럼 새로운 창이 하나 열립니다.

파일 이름을 원하는 이름으로 설정해주시고 확인을 눌러주면 애니메이션 창에 타임라인이 하나 생기게 됩니다.

이 애니메이션 창에 추가한 오리 이미지들 전부를 추가해주겠습니다.

그럼 이런 식으로 이미지들이 타임라인 속에 배치됩니다. 그러나 이 상태로 게임을 실행하면 애니메이션이 너무 빨라서

자연스럽지 않게 됩니다. 따라서 사진 속에 보이는 다이아몬드 모양의 위치를 조정해서 날갯짓이 자연스러워 보이도록 시간을 맞춰주도록 하겠습니다.

이미지들을 마우스로 전부 선택하면 양 끝에 파란색 막대가 생깁니다. 이걸 늘려주면 일정한 시간 간격으로 자동으로 시간이 늘어나게 됩니다.

추가로 날개가 올라간 모습에서 바로 날개가 내려간 모습으로 바뀌면 날개의 움직임이 어색해지기 때문에

날개가 가운데에 있을 때 모습을 맨 뒤에 추가해주겠습니다.

조금 더 자연스러워졌습니다. 이제 오브젝트를 전환시켜주겠습니다. 플래피 버드는 오른쪽에서 왼쪽으로 장애물이 날아오기 때문에 오리가 오른쪽을 바라보고 있으면 게임이 자연스러울 것입니다.

샘플 씬으로 돌아와서 추가한 오브젝트 이름을 눌러줍니다. 그럼 인스펙터라는 창이 하나 열릴 것입니다.

여기서 동그라미 친 곳을 체크하면 오브젝트가 좌우반전 됩니다.

4. 물리엔진 추가하기

이제 오브젝트에 중력을 추가해주도록 하겠습니다. 중력이 추가되면 오리는 아래로 떨어지게 될 것입니다.

추가한 오브젝트를 클릭하고 위 사진에서 컴포넌트 추가를 눌러줍니다. 그럼 컴포넌트의 종류들이 보일 텐데

2D 게임이기 때문에 물리 2D를 추가해주도록 하겠습니다. 

리지드바디 2D라는 것을 추가한 뒤 게임을 실행해보면 오리가 아래쪽으로 쭈욱 내려가게 됩니다.

5. 점프 코드 작성하기

이제 점프 기능을 추가해주도록 하겠습니다. 컴포넌트 추가를 눌러서 아래쪽의 새 스크립트를 눌러주세요.

스크립트의 이름을 설정하고 추가해주세요. 이제 코드를 작성하겠습니다. 인스펙터에 만들어진 스크립트를 더블 클릭하여 Visual Studio로 열어주겠습니다. 만약 Visual Studio가 열리지 않는다면 상단 메뉴에서 편집-환경 설정-외부 툴-외부 스크립트 에디터를 Visual Studio로 바꿔주시면 됩니다.

비주얼 스튜디오가 열렸으니 이제 점프 기능을 추가해주도록 하겠습니다. 저는 스페이스 바를 누르면 점프가 되도록 만들어주겠습니다.

만들어진 코드입니다.

public class duck_jump : MonoBehaviour
{
    Rigidbody2D rigid;
    public float jump;

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

    void Update()
    {
        if(Input.GetMouseButtonDown(0)||Input.GetKeyDown("space"))
        {
            rigid.velocity = Vector2.up*jump;
        }
    }
}

Rigidbody2D rigid; 는 rigid 라는 변수를 만들어 준 것입니다.

public float jump; 는 jump라는 변수를 만들어서 점프 정도를 설정하는 것입니다.

rigid = GetComponent<Rigidbody2D>(); 는 이전에 추가했던 컴포넌트의 리지드바디를 받아오는 것입니다.

if(Input.GetMouseButtonDown(0)||Input.GetKeyDown("space"))

는 마우스 좌클릭을 했을 때 또는 스페이스를 눌렀을 때 명령을 실행하는 것입니다.

rigid.velocity = Vector2.up*jump; 는 불러온 리지드바디의 velocity를 Vector2.up X jump(변수)로 설정하는 것입니다.

velocity는 속도를 나타내고, Vector2.up은 위쪽 방향을 의미합니다. 거기에 jump를 곱해서 위로 jump 만큼 올라간다는 의미이죠. 여기까지 유니티 프로젝트를 생성하고, 오브젝트를 추가하고, 애니메이션을 적용하는 방법과 중력과 점프 기능까지 추가해보았습니다.

반응형