2D 슈팅게임 만들면서 어려웠던점
1.
문제점 : 탄막이 배경의 경계를 넘어갈 때 자연스럽게 사라지지 않는 현상
해결책 : 해당 배경 오브젝트에 "Sprite Mask" 컴포넌트를 부착하여 Order In Layer의
범위를 적절하게 설정. 그리고 탄막 오브젝트의 스프라이트의 Mask Interaction
을 "Visible Inside Mask" 로 하여 마스크 내부에 있을 때만 해당 스프라이트가 보이게 설정.
그 결과 탄막이 배경을 벗어날 때 자연스럽게 사라지게 보이게 됨.
2.
문제점 : 이동하면서 탄막을 발사할 때, 잠시동안 화구에서 탄막이 나오지 않았다가 나오는 현상
해결책 : 탄막 스크립트에서 "poolManager.ReturnTanmakuToPool(gameObject)" 코드를 설정해 놓아서
어떤 Collider든 충돌하면 풀에 들어가게 설정. (플레이어의 Collider도 포함)
이동할 때 플레이어의 Collider와 충돌해서 탄막이 풀에 돌아가는 상황을 아예
배제하기 위해 "Project Settings의 Physics 2D"에서
플레이어의 Layer와, 탄막의 Layer의 충돌을 헤제.
그 결과 이동하면서 탄막을 발사할 때, 화구에서 탄막이 씹히는 현상이 나오지 않게 됨.
3.
문제점 : 빌드후, 게임실행시 빌드하기전 설정이 초기화되지 않고 남아있는 현상
해결책 : 창 크기를 관리하는 "SelectWindowSize", 음량을 관리하는 " VolumeSetting",
언어를 관리하는 "LanguageManager" 스크립트에
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]라는,
씬 로드 이전에 실행되는 어트리뷰트가 달린 함수를 첨부하고 PlayerPrefs.Set
을 사용하여, 스크립트에 따라 각각의 창크기, 음량, 언어의 초기값을 설정.
그리고, 이전에 있던 값을 제거하기 위해
함수를 만들고 그 함수에 PlayerPrefs.DeleteKey 코드를 넣고,
PlayerPrefs.DeleteKey 코드에 각각 지우고 싶은 값들을 설정.
그리고 Awake또는 OnEnable 함수에, 해당 함수를 넣고, 빌드하기전에 게임실행.
(한번 실행한다음엔 해당 함수 주석처리)
이렇게 하면 빌드후, 최초 게임 실행시 값이 없기 때문에
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
에서 설정한 각각의 초깃값들이 적용됨.
이렇게 해서 빌드후, 최초 게임 실행시 초기화 된 값으로 게임을 플레이할수 있게 됨.
4.
문제점 : 빌드후, 창 모드 상태에서 창 크기를 마음대로 바꾸면
렌더링 캔버스의 가로:세로 비율이 계속 달라지는 현상
해결책 : 월드 오브젝트들은, 카메라 옵션이 Orthographic이기 때문에,
창이 커지거나 작아지면 스프라이트가 더 많은, 적은 픽셀로 그려져서
자연스럽게 크기가 조절됨. 하지만, UI 쪽은 해상도에 따라서 균형 맞게 조절되어야 해서,
UI Scale Mode를 "Scale With Screen Size"로 바꾸고,
ReferenceResolution 은 "1920, 1080",Screen MatchMode 는 "Match Width Or Height"
Match 값은 0.5로 변경해서 창크기에 따라서 UI도 적절하게 조절되도록 설정.
그다음, "WindowsAspectHook" 이라는, 창 크기를 관리하는 스크립트에서
창을 드래그할 때 항상 목표 종횡비(예: 16:9)
로 맞추고, 최소/최대 창 크기 범위를 디스플레이 해상도의 비율로 제한.
이렇게 해서 창을 아무리 드래그해도 렌더링 비율이 고정되어,
스프라이트가 찌그러지거나 위치가 튀는 이질감이 사라지게 됨.
'게임 개발(유니티) > 취업 포트폴리오' 카테고리의 다른 글
| 유니티 포트폴리오 링크 모음 (0) | 2025.12.28 |
|---|