
제트카라라는 게임의 코드를 분석하고 일부 수정해 커스텀하는 실습을 수행했다.
게임은 에셋 스토어에서 다운 가능하다.
게임의 플레이 방식은 그림과 같이 마우스 클릭으로 저 노란색 친구를 점프시켜 장애물을 통과하는 게임이다.
커스텀 계획
1. 콜라이더 범위 줄여서 난이도를 쉽게 변경
2. 클릭시 불꽃 외 한가지 변화가 더 일어나도록 변경
3. 장애물 추가 후 랜덤으로 등장하도록 변경
커스텀 과정
1. 콜라이더 범위 줄여서 난이도를 쉽게 변경

장애물에 닿는 범위가 너무 엄격해서 플레이가 어려워 설정한 계획이다.
player의 collider의 지름을 0.33->0.25로 줄였다.
2. 클릭시 불꽃 외 한가지 변화가 더 일어나도록 변경

클릭 시 불빛 이펙트가 일어나게 했다.

빈 오브젝트 생성 후
컴포넌트 추가 - Sprite Renderer 추가- 이미지 추가(Sprite 추가)
이미지는 내가 직접 png 파일로 구해와서 에셋 창에 넣어줘야지 스프라이트 항목에서 설정 가능하다.

이때 스프라이트 창에 내 사진이 뜨지 않는다면 이미지를 눌러 인스펙터창을 확인해봤을 때
텍스쳐 타입이 디폴트로 돼있을 가능성이 크다. 스프라이트로 변경해주면 해결.
애니메이터는 기존 이펙트인 불 효과랑 동일하게 넣어준다.

변수를 하나 추가해 원래의 불 효과와 구분 지은 뒤
0.3초 더 효과가 지속되게 설정한다.(차이점을 주기 위함)

플레이어 스크립트에는 flower 라는 public 오브젝트 추가 후 점프 시 액티브 하는 코드만 추가한다.

플레이어 인스펙터 창에 오브젝트 추가해준다.

추가로 메인메뉴 화면에도 꽃 이펙트를 추가해줬다.
3. 장애물 추가 후 랜덤으로 등장하도록 변경
우선 나무 오브젝트부터 만들어준다.


Object인스펙터 창에는 원래 장애물에 적용돼있던 object move스크립트를 넣어준다.


각자 Collider 2d 컴포넌트 추가 해주고(트리거 체크)
태그를 나무는 finish, 위에 빈공간은 score로 해준다.

오브젝트 두개를(기둥, 나무) 배열화 해서 퍼블릭 변수로 설정

인스펙터 창에서는 배열의 내용을 각각 설정할 수 있다.

게임메니저 스크립트에서 오브젝트 생성하는 함수를 변경.
처음엔 장애물을 배열로 설정하지 않고
랜덤함수의 결과에 따라 if문으로 각각 복제하는 함수를 적용해줬는데, 문제가 이것저것 발생했다.
장애물을 배열로 설정해주니 오류도 해결됐고 코드도 훨씬 간단해졌으며, 이후 장애물을 추가 설정해도 따로 코드를 변경하지 않아도 되게 됐다.

뭔가 오류가 많이나서 기본 오브젝트를 따라서 오브젝트 2 레이어를 Ignore Raycast로 설정했더니 해결됐다(?)
장애물의 개수를 늘리면서 기본화면에 장애물이 있는 상태로 시작하면 안되게 되면서
계층창에 오브젝트를 삭제하고 프리팹화 해줬다.
그렇게 처리했더니 화면 바깥에서 복제가 시작돼서 게임 시작 후 플레이어가 장애물을 한참동안 기다리게 됐다.
이를 해결하기 위해

start에서도 기본으로 하나가 랜덤 생성되게 했다.

나무까지 정상적으로 등장하는 모습

오브젝트 하나 더 생성 후 배열에 추가만 해주면

이와 같이 세가지 오브젝트가 랜덤으로 등장한다.
실습파일 위치
Practice-Unity/Project JetKara Custom at main · jjiing/Practice-Unity (github.com)
'C# > C# 학습 (TIL)' 카테고리의 다른 글
C# 중급문법 DAY1 추상클래스/인터페이스/콜렉션/foreach/var/object (0) | 2022.06.15 |
---|---|
C# 중급문법 DAY2 확장메서드 /일반화(where T :)/ 딥카피/ 싱글톤 일반화 (0) | 2022.06.15 |
C# Unity 다형성 실습 (0) | 2022.04.13 |
Unity C# 이벤트함수 (0) | 2022.04.13 |
C# Unity Rigidbody, 충돌 (0) | 2022.04.13 |