DevLog_GBB999_09

 


이동공간 확보를 위해 몬스터 개체수를 줄였다.

우주선에 이펙트를 추가 해 봤는데 그래도 원하는 속도감이 나오지 않는다.

이제 게임오버랑 베스트레코드 부분을 작업 해 보자.

게임오버를 위해 UI를 몇개 더 추가 해 주자.

우선 플레이어의 현재 상태가 변경되는 거기 때문에 불리언 변수를 하나 만들어 주고

살아있는 상태에서 작동하는 모든 노드에 연결 해 준다.





눈에 보이는 메쉬는 파괴해 주고 카메라를 뒤로 약간 밀어준다.(딱히 의미는 없다 그냥 충돌 느낌을 좀 주기위해 해봤다.)

그리고 여기다 폭발 이펙트를 달아주면 끝,결과는 이렇게.


이펙트는 나중에 수정 해 주기로 하고,fade out 효과를 넣고 베스트 레코드를 기록 하는 작업을 하자

게임모드에 현재 점수와 최고 점수 변수를 만들어 주고 캐릭터BP에서 현재 점수와 베스트를 비교 한다. 그리고 게임 모드에서 세이브 함수를 하나 만들어 주고 현재 점수가 최고 점수보다 높으면 함수를 실행 한다.




게임모드에 로드 함수도 만들어 주고 게임 시작할때 로드함수를 호출 해 준다.


그럼 베스트 레코드 작업 끝.

문제가 있다.

항상 발생하지는 않지만 옆으로 충돌 했을때 우주선을 destroy 해 주는 바람에 관련된 BP들이 오류를 일으킨다.

간단하게 수정하자. 파괴 하지 않고 카메라 뒤로 보내주도록 하자.(수정됨)

gameover 위젯을 새로 만들어 주고 게임 오버가 되면 기존 위젯을 삭제 하고 2초후 호출해 주는 방식으로 만들었다.



리스타트 하면 레벨을 다시 호출 해 주고,메인 메뉴는 메뉴 레벨을 호출 해 주고 quit 는 게임 종료 시켜준다.

GBB:뒤에는 현재 게임 스코어를 넣어 주려 한다.



요렇게

마지막으로 아이템을 넣어봐야겠다.

어떻게 넣지...

디바이스 테스트를 했는데 화면이 너무 어둡고 속도가 느리다.( fps 확인 해 봤는데 큰 문제 없음)

라인 이동을 규정 하는 방식도 중간 중간 오류가 생긴다.

일단 화면은 나중에 수정 하기로 하고 이동 방식에 버그를 수정 해야 겠다.

-300 0 300 위치에 있을때만 이동 가능하게 만들어 뒀는데 이부분에서 오차가 발생해 이동이 안먹히는 문제 같다.

위치 로그를 찍어 확인을 한번 해 봐야겠다.

지장된 라인을 벗어나지 않게 하기 위해 만들어둔 노드를 삭제하고 불리언 변수를 하나 만들어 대체해 줬다.

기존 조건에서 오차범위를 설정해 주는 방법으로 변경함.

아이템 까지 다 구현 하고 문제점 찾으면서 수정 해야 겠다.

생각을 해 봤는데, 두가지 모드로 만들어야 겠다.

아이템전 노템전.

노템전은 지금 버전에서 마무리 되면 될거 같고.

UI 위치를 좀 변경 해 주고 아이템전 노템전 구분할수 있게 버튼을 추가 해 준다.


화면이 너무 칙칙해서 알록달록하게 색을 변경 해 봤다.

변경된 색에 따라 흡수되는 별들의 색도 변경되게 만들었다.

알록 달록 하다.



ItemReady 변수를 하나 만들어 준다.

라인 생성시 해당 변수가 참이면 아이템을 만들기 위해서이다.

아이템은 매 10번째 바닥 생성 ,게임인스턴스에 floor를 카운트 할수 있게 정수형 변수를 하나 만들어주고 매 10번째 에서 아이템 레디를 참으로 선언 해 준다.

이렇게,



1번 라인은 맨 앞에서 시작해 최소1개 최대 4개가 생성된다.

최대 수량이 아닐때 반반의 확률로 마지막 자리에 아이템을 생성 한다.

2번 라인은 중간쯤 스폰되어 최소1개에서최대 2개 생성된다.

최대 수량과 상관없이 앞이나 뒤에 아이템을 생성 한다.

3번 라인은 맨 뒤에 스폰되고 최소1개 최대2개 생성된다.

최대 수량이 아닐 경우 앞쪽으로 아이템을 생성한다.


일단은 이렇게 해 보고, 확률을 조정하든 수량을 조정하든 해 봐야 겠다.

1번 3번은 각 라인의 오브젝트 어레이 길이로 결정 해 주면 되고

2번은 경우의 수가 있거나 일경우의 수 3 없는 경우 1 총 4개다,

그래서 일단은 이렇게 생성 하도록 하고 스트링 찍어보면 잘 작동 한다.

아이템 애니메이션을 만들어 주고 플레이 테스트를 해 보면

나야 아이템~나야 아이템~
타겟팅에 등록을 해 주고 충돌처리를 해 주면 완성.

컨트롤 미스가 많아 터치의 민감도를 낮춰줬다.



5개의 아이템을 만들었다.
가위 바위 보는 왼쪽 오른쪽 무기를 바꾸는데 사용한다.
우선 3개 아이템을 구현 해 보자.

ui 이미지를 바꾸는 거니 게임모드에서 바꿔줘야 한다.

로직 정리
로비위젯->게임인스턴스->게임위젯,캐릭터

그럼 게임 중간에 무기교체를 하려면 같은 로직으로 진행 되면 될거 같다.
근데 왼쪽인지 오른쪽 인지 구분을 해 줘야 하는데 이 정보는 캐릭터가 가지고 있다.
캐릭터에서 게임모드의 함수를 호출 해 주는게 맞는거 같다.

정수 변수lastfireon를 하나 만들어 주고 0이면 왼쪽 1이면 오른쪽으로 분기 해 준다. 

0,1,2일경우 의도대로 작동을 한다.
문제는 3,4 이상의 번호는 다른 타입의 아이템이다




일단 이렇게 함수를 하나 더 만들고 인덱스도 구분해서 사용하고 필요에 따라 호출되는 함수를 달리 해 주도록 한다.

뭔가 이상하다. 정확히 변경되지 않는다.
짐작가는 이유는 초기값 같은데....

다시 정리 해 보자.
로비UI에서 게임인스턴스로 선택한 인덱스를 넘긴다.
게임인스턴스에서 게임ui에서 받아온다. 동시에 캐릭터도 받아온다.
데칼 배열을 잘못 만들어 놨었다.


혹시 모를 오류방지와 기타 이유로 발사버튼 쿨타임을 만들어야 겠다.
특별한 연출 없이 연사만 방지 하는 방향으로 만들어 보자.
이렇게 간단히 해 주고 시간은 테스트 하면서 조절 해 보자
0.2초 괜찮은거 같다.

위 방법은 중간 중간 활성화로 돌아 오지 않는 버그가 있다.
재현이 어려워 원인을 정확히 알수는 없지만 옳은 방법은 아닌거 같다.
다른 방법으로 수정을 해 봐야 겠다.


이제 남은 두 아이템만 만들어 주면 되는데
방패랑 폭탄이다.
방패는 충돌에서 한번의 기회를 더 가질수 있고 폭탄은 아이템 위치엣서 뒤로 5개 정도?
일단 방패부터 생각 해 보자.

카메라 쉐이크에 문제가 있다. 누적되는 위치 격차가 보인다 
게임이 좀 진행 되면 캐릭터의 위치가 변화된거 처럼 보인다.
이부분을 우선 해결 하고 진행 해야 겠다.
카메라쉐이크로 누적된 위치값이 카메라에 그대로 반영되어 이격이 발생하고 있다.

회전값으로 변경.

쉴드 메쉬를 하나 만들어 준다.


요렇게 적용을 해 주고,조건을 추가 해 준다.
정수변수 하나 만들어 주고 0일때 충돌하면 게임 오버로 설정
0이 아니면 -1, 정수로 만들어 준 이유는 중복 사용을 고려 함도 있고, 같은 변수를 활용해 나중에 무적 모드도 만들어 볼 생각이기 때문이다.


이제 폭탄.
폭단도 발사체로 사용한다.
캐릭터bp에 아래와 같은 함수를 만들어 주고

랜덤으로 5-10개까지 파괴한다.


아이템에서 호출 해 준다.

요렇게




댓글