본문 바로가기
게임 제작/뉴진스 파워퍼프걸 팬게임

뉴진스 파워퍼프걸 팬게임 제작 (6)_ Stage1_오브젝트 구현 (New jeans Powerpuff girls fangame)

by 나는반딧불 2023. 8. 16.
반응형

뉴진스 파워퍼프걸 팬게임 제작 (6)_ Stage1_오브젝트 구현

이번에는 토끼, 쿠키 등의 오브젝트들을 구현해볼 차례이다.

 

 

이번 글의 목표

쿠키 아이템 구현

토끼 아이템 구현

스케이트 아이템 구현

장애물 가시 구현

랜덤박스 일부 구현

파이프 구현

토끼 조각상 구현

피격 효과 구현

 

 

 

 

1.이미지 번들을 개별로 자르기

오브젝트 이미지들을 한 이미지 안에 모아둔 파일이 있다.

이렇게 하면 관리하기도 편하고 저장 용량도 절약할 수 있다고 한다.

주로 애니메이션을 위한 이미지들을 저렇게 모아두면 관리하기가 편한다.

아무튼 저러한 이미지들은 바로 쓸 수 있는게 아니라 일련의 과정을 거쳐야한다.

이미지 번들을 선택하고 Sprite Mode Multiple로 변경 후 Sprite Editor를 누른다.

 

그러면 Sprite Editor창이 뜨게 되는데

여기서 상단의 Slice 탭을 누르고

TypeAutomatic으로 설정 후

 Slice 버튼을 누르면 해당 이미지들이 알아서 잘려진다.

마지막으로 우측 상단의 Apply를 누르면 잘라진 상태가 적용된다.

 

다른 이미지 번들도 똑같이 잘라준다.

 

 

 

2. 오브젝트 애니메이션 만들기

애니메이션으로 만들고 싶은 이미지 파일들을 여러개 선택한 후 Scene화면에 드래그 드롭한다.

 

그러면 갑자기 파일 저장 창이 뜨게 된다.

 

 

자동으로 뜨는 위치에 아무렇게나 이름 지어서 저장해도 되긴하지만 

그러면 나중에 관리하기 힘들어지니 Assets 폴더에 Anims란 폴더를 새로 만들고

그곳에 Item_rabbit이라고 저장한다.

 

 

 

이후 게임을 실행해보면 토끼가 움직이는 애니메이션을 확인할 수 있게 된다.

하지만 토끼가 너무 빠르게 회전한다.

 

토끼의 애니메이션 속도를 줄이기 위해

Animator창을 열어서 해당 애니메이션을 클릭후

1로 설정되어있는 Speed0.5로 변경해준다.

 

 

그럼 토끼가 적당한 속도로 회전되는 모습을 확인할 수 있다.

 

 

다른 애니메이션이 필요한 오브젝트들도 똑같이 작업해주자.

 

 

 

3. 나머지 오브젝트들도 설치하기

이제 애니메이션이 필요없는 다른 오브젝트들도 Scene에 끌어다 배치해 주자.

 

 

 

4. 오브젝트 충돌 설정하기

현재 해당 오브젝트들은 이미지만 보이고 충돌해도 아무런 반응이 없는 상태이다.

충돌 스크립트를 짜기 전 몇가지 컴포넌트들을 추가해 설정을 해주자.

먼저 Order in Layer는 -3으로 설정

Tag는 원하는 이름으로 각각의 오브젝트 별로 만들어서 설정

나는 각각의 태그를

토끼 아이템 = ITEM_MP

쿠키 아이템 = ITEM_HP

스케이트 아이템 = ITEM_SKATE

가시 장애물 = ENEMYE

토끼 조각상 = ITEM_FIGURE

이렇게 설정했고

파이프와 랜덤박스는 별도의 처리를 해줄거라 따로 태그를 변경하지 않았다.

이후 Rigidbody 2DBoxCollider 2D 컴포넌트를 추가해

예전에 스테이지 벽을 만들었을 때처럼 설정해주었다.

 

 

 

5. 충돌 스크립트 작성하기

 

5.1 선언

먼저 선언을 위와 같이 해준다.

hp, mp 변수 부터

오브젝트별 점수 설정

각종 효과음 선언

피격 이벤트 오브젝트 및 피격 이벤트 생성 위치 선언까지 했다.

cheat 변수는 나중에 테스트할때 쓸거라 지금은 중요한게 아니고

timersupermode는 플레이어가 피격 당했을 때 일정시간동안 무적이 되는 

함수를 만들기 위한 변수이다.

speedmode변수는 이미 스피드 모드인 상태에선는

아이템을 또 먹어도 빨라지지 않게 설정하기 위한 변수이다.

글 작성하면서 든 생각인데 이건 굳이 안 만들었어도 될 것 같다.

 

그 외에 Count변수들은 후에 UI랑 연동하기 위해 미리 작성한 변수이다.

 

 

5.2. Start 함수에서 변수 초기화

특별할 것은 없고 일반적인 초기화다.

5.3. OnTriggerEnter2D 함수

장애물과 충돌하면

피격 효과음 재생, 

hp 감소,

피격 이벤트 이미지 생성,

무적모드 발동

 

아이템과 충돌하면

점수 획득,

획득 효과음 재생,

일부 아이템 카운트 증가,

해당 오브젝트 삭제

등으로 설정했다.

 

이후 아이템들은 UI 설정을 할때 특정 키를 누르면 사용할 수 있게 만들 것이다.

 

단 스케이트는 먹는 즉시 발동될 수 있도록 작성했다.

스케이트와 충돌시 PlayerMoveCtrl 스크립트에 있는 speedmodeON 함수를 발동시키도록 하였다.

물론 저 함수는 아직 만든적 없으니 새로 만들어줘야한다.

 

5.3.1 PlayerMoveCtrl 선언

변수 선언은 별 거 없이 저 3개만 하면 된다.

 

5.3.2 PlayerMoveCtrl 스피드 모드를 위한 함수들

speedmodeON함수가 호출되면

update 함수에서 timer함수가 발동되고

timer함수가 시작되면 동시에 Movefast함수를 발동해서

speed값이 9가 된다.

이후 시간이 다되서 timer함수가 종료될 때는 다시 Movecontinue함수를 발동해

원래 속도로 돌려놓는다.

 

분명 저것보다 더 효율적인 코드가 있을 것 같은데

하다보니 저렇게 복잡하게 만들어졌다.

 

 

5.4. supermodeCheck 함수

아까 스피드모드의 타이머처럼 일정시간만 무적모드가 유지되게 하는 코드이다.

 

5.5. Update 함수

업데이트 함수에는 아까 만든

supermodeCheck 함수만 추가하면 된다.

 

 

 

6. 사운드 추가

아까 스크립트에서 사운드를 추가했으니 Scene에 사운드를 추가해주자.

그냥 사운드 파일을 Scene에 드래그 드롭하면 된다.

 

이후 Scene이 불러지자 마자 사운드가 재생되지 않도록 

Play On Awake의 체크박스를 해제해주자

 

 

7. 피격 이벤트 프리팹 및 피격 이벤트 위치 생성

피격 이벤트가 생성되도록 만들었으니 해당 이벤트 프리팹을 만들어주자.

적당한 피격 이펙트 이미지에 

저번에 만들어놓은 Destroy_cooltime 스크립트를 추가해주었다.

Time은 적당히 0.2초로 설정했다.

 

이것도 블로그 작성하다 보니 든 생각인데 이렇게 생성되게 만들 게 아니라

그냥 플레이어 오브젝트에 자식으로 고정해놓고

피격 당때마다 활성화 비활성화 전환하는게 훨씬 더 좋았을 것 같다.

나중에 변경해야겠다.

 

플레이어 오브젝트 아래에 DamgePos의 이름을 가진 빈 오브젝트를 생성했다.

DamgePos의 위치는 플레이어 보다 살짝 위에 배치했다.

 

 

8. 플레이어 오브젝트에 충돌 스크립트 추가하고 오브젝트들 채워 넣기

플레이어 오브젝트에 아까 만든 스크립트를 추가하고

변수들을 임의 조정하거나 오브젝트들을 알맞게 드래그해서 채워넣어 주었다.

 

 

 

9. 파이프와 랜덤박스에 충돌 감지 벽 추가하기

랜덤박스와 파이프는 아예 플레이어가 통과하지 못하게 만들거라

예전에 만든 화면 벽들처럼 똑같이 추가해 주었다.

화면 벽과 다른점이 있다면 상하좌우가 반대라는 점이다.

플레이어가 오브젝트들을 통과하지 못하게 하기 위해

왼쪽면에 Rightwall 오른쪽면에는 LEFTWALL을 설치했다.

마찬가지로 아랫면에는 UPWALL, 윗면에는 Downwall을 설치했다.

 

원래 랜덤박스는 공격하면 랜덤 아이템을 위로 생성하는 오브젝트인데

아직 공격을 구현하지 않아서 일단 통과하지 못하는 것까지만 구현했다. 

 

 

10. 결과물

 

 

오브젝트 인게임 화면

아이템을 먹으면 사라지는 것 

가시에 닿으면 피격 이펙트가 생성되고

일정시간동은 무적이라 다음 가시에 닿았을때는 피격 이펙트가 생성되지 않는 것,

 그리고 스피드 아이템을 먹으면 일시적으로 속도가 빨라지는 것까지 구현되었다.

점점 게임화면이랑 비슷해지고 있다.

 

 

다음 글에서는 UI 적용 및 아이템 사용을 구현할 계획이다.

 

 

 

뉴진스 파워퍼프걸 팬게임 제작 (5)_ Stage1_캐릭터 이동 구현 (New jeans Powerpuff girls fangame)

뉴진스 파워퍼프걸 팬게임 제작 (4)_ Stage1_캐릭터 이동 구현 이번에는 저번에 만들어 놓은 배경 위를 날아다니는 캐릭터를 만들어볼 차례이다. 이번 글의 목표 캐릭터 상하 좌우로 움직이기 캐릭

culturelevel.tistory.com

 

 

뉴진스 파워퍼프걸 팬게임 제작 (7)_ Stage1_UI & 아이템 사용 구현 (New jeans Powerpuff girls fangame)

뉴진스 파워퍼프걸 팬게임 제작 (7)_ Stage1_UI & 아이템 사용 구현 저번글에서 오브젝트를 만들고 먹으면 점수 상승하는 것까지 구현했으나 UI가 없어서 점수가 올라도 확인할 수 가 없었다. 이번

culturelevel.tistory.com

 

반응형