본문 바로가기
관/핫한 닷지 프로젝트 게임개발

닷지 게임제작 기초 19(닷지 프로젝트 완성!)

by 4차원 박스 2020. 8. 2.

오늘로써 닷지 프로젝트는 마무리가 된다!

각자가 만든 닷지를 만들어보고 개발에 도전하는 계기가 되었으면 한다!

 

각자 마음에드는 에셋파일을 Assets으로 옮겨서 받았을 것이다.

이제 수정할 것은 초라한 오브젝트의 겉모습이다.

 

우리가 사용한 플레이어의 오브젝트는 캡슐

총알은 스피어, 총알 생성기는 큐브였다.

이러한 기본 오브젝트를 우리가 받은 오브젝트로 바꾸어 주어야 한다.

 

각자 받은 에셋파일을 보면 Models 파일이 그것을 대신할 것이다.

거기서 자신이 마음에 드는 3가지를 골라서 플레이어, 총알, 총알 생성기를 대처할 오브젝트 그러니까 모델을 골라주자.

 

나는 이렇게 3개를 골랐다.

플레이어는 우주선으로

총알은 좀비로

총알 생성기는 벙커로 하였다.

 

이제 플레이어부터 바꾸어 준다.

 

만드는 방법은 간단하다. 레고조립을 다시 한다고 생각하면 된다.

모델폴더에서 우주선을 드래그 드롭하여 플레이어 컴포넌트에서 필요하였던 컴포넌트를 그대로 붙여넣는다.

https://hotstudy.tistory.com/47 

 

닷지 프로젝트 오브젝트 기초 03(플레이어 만들기).

이제 플레이어를 만들어 본다. (다음 포스팅에서 스크립트를 사용할 예정 이번 포스팅에선 오브젝트와 컴포넌트를 본다). 원하는 플레이어의 기능은 1. 파란 캡슐모양 2. 화살표 또는 wasd�

hotstudy.tistory.com

아래 포스팅을 참고하여 캡슐 콜라이더를 그대로 사용하되 범위를 조금더 줄이는 방식으로 하여 만든다. 중요한건 태그를 Play로 해주는 것이다! 이것을 설정해주지 않으면 오류가 난다!

https://hotstudy.tistory.com/57 

 

닷지 프로젝트 오브젝트 기초 05(플레이어 죽음 스크립트).

이번 포스팅은 아주짧다. 플레이어 사망처리를 해본다 Die()라는 메서드를 만든다. 기능 1. 플레이어 게임오브젝트를 비활성화 하여 죽음을 구현하는 메서드임 2. 탄알과 플레이어가 충��

hotstudy.tistory.com

다음은 프리팹 기능이 들어간 총알과 총알 생성기이다.

본래 프리팹의 복제본인 인스턴스 하나를 만들고 복제본에서 수정된 사항을

본체에 적용시키는 방식으로 변화를 준다.

 

(나루토에서 그림자 분신으로 수련해서 본체도 경험치 쌓는 댕사기 방법을 떠올리면 된다).

 

에셋의 총알생성기 Bulletmaker를 하이어라키 창으로 드래그 하여 인스턴스 오브젝트를 만들어준다.

오브젝트를 담당하는 기존 컴포넌트인 Mesh Filter를 우클릭 Remove component로 삭제해주고 다시 Mesh Filter컴포넌트를 만들어 준다.

 

그리고 벙커모양을 담당하는 barrelLarge을 넣어준다.

그다음은 머터리얼을 바꾸어준다.

우선 에셋에서 모델파일에서 머터리얼 까지 묶여져있으므로 이를 풀어주어야 한다.

해당 모델을 눌러주고 인스펙터 창에서 Extract Materials 를 눌러서 material 파일에 만들어 주자.

그럼 원하는 머터리얼이 분리가 되어 적용이 가능해질 것이다,

벙커의 머터리얼이 2개였다 그러므로 적용되어야 하는 머터리얼(쉐이더)2개 이다.

이것은 Mesh Renderer 컴포넌트의 Materials에서 조절 해야 한다.

size2로 설정하자.

 

(하지만 의미가 없다. 2시간 가량 적용이 되지 않아 이유가 뭘까 고민 해보았지만 모르겠다. 그냥 하나만 적용해주고 사이즈도 적당히 조절해 주자).

 

인스턴스 로(분신) 만든 총알 생성기를 적용해주고 벽을 지워주자.

마지막으로 총알을 적용시켜준다.

총알의 경우 모델의 구성이 여러개로 적용되어 있기에 플레이어와 같은 방법으로 프리팹을 새로 만들어준다 생각하고 해준다.

 

역시나 사이즈 조절과 프리팹조절 등을 아래 포스팅을 참고하여 레고조립을 하듯이 다시 조립을 해주면 다음과 같은 화면이 등장한다.

꽤 그럴듯한 퀄리티가 등장하지만 문제점이 드러난다.

플레이어의 움직임이 어색하기 짝이없어진다!

 

2D라면 몰라도 3D라 나타나는 어색함이다

이를 줄이기위해 회전을 구현한다.

 

플레이어 컨트롤 스크립트를 다음과 같이 수정한다.

 

void Update()

{

float xinput = Input.GetAxis("Horizontal");

float zinput = Input.GetAxis("Vertical");

 

if( xinput<0)

{

transform.Rotate(new Vector3(0, -180, 0) * Time.deltaTime);

}

if (xinput > 0)

{

transform.Rotate(new Vector3(0, 180, 0) * Time.deltaTime);

}

 

float xspeed = xinput * speed;

float zspeed = zinput * speed;

 

Vector3 NewVelocity = new Vector3(xspeed, 0f, zspeed);

playerRigidbody.velocity = NewVelocity;

}

 

새로 추가된 부분이 이곳이다

 

If( xinput<0)

{

transform.Rotate(new Vector3(0, -180, 0) * Time.deltaTime);

}

if ( xinput > 0)

{

transform.Rotate(new Vector3(0, 180, 0) * Time.deltaTime);

}

좌우와 관련된 입력값이 들어올경우에 회전을 하게되는 것이다 왼쪽이면 왼쪽으로 회전

우측으면 오른쪽으로 회전하게 된다.

 

처음부터 정주행하려면?

https://hotstudy.tistory.com/36

 

닷지 프로젝트 오브젝트 기초 01(바닥 만들기).

1. 바닥 오브젝트 만들기. 이후 위치를 0,0,0으로 하기 톱니바퀴에서 리셋버튼을 누르면 된다. 톱니바퀴의 공식 명칭 = gear버튼 or component context menu버튼 이다. 크기(스케일) 을 2,1..

hotstudy.tistory.com

닷지 전체코드를 보고싶다면?

https://hotstudy.tistory.com/34

 

닷지 프로젝트 전체 코드

유니티상에서 작동하는 간단한 닷지 게임 코드 전체 공개를 하고 이 스크립트(코드)를 어떻게 적용시키는지 그 방법을 차근히 다음 포스팅에서 공개하도록 하겠다(파이게임 포스팅때의 자료는

hotstudy.tistory.com

<닷지 끝!>

 

 

댓글