0. 개요
원래 오늘은 이번주 과제를 빠르게 마무리 하려고 했었다.. 하지만 과제보다는 기존에 하던 미니 프로젝트를 하루 빨리 완성해 강의에 집중하고 싶어서 오늘도 언리얼만 하루종일 만지작 거렸다..
이제 목표했던 기능들은 거의다 만들어져서 생각보다 빨리빨리 만들 수 있었다.
하지만, 반사 벡터에서 조금 문제가 발생했는데.. 아직도 해결하지 못해서 더 생각해서 빠른시일 내로 수정을 해야할 것 같다.. ㅜ
또, 아직 음악이나 효과음을 못 넣었고, 라이팅, 진행하는 길 표시 정도는 조금 더 손봐야할 거 같아서 오늘도 마무리가 덜된 것 같다..
확실히 직접 만든 게임이라 그런지 계속해서 개선할 사항이 보이고, 계속해서 손이가는 것 같다. ㅋㅋㅋㅋㅋ
다른 걸 하려고 해도 계속 손이가니.. 빨리 마무리하고 싶은 마음이 크다.. ㅠ
또, 이번주 과제는 어렵지 않지만, 금요일 부터 드디어! 팀 프로젝트를 시작하기 때문에 그 전까지는 어떻게든 빠르게 마무리 지어야 한다..
(추가적으로.. 외장하드를 구입해 노트북 포멧도 돌려야하고... 프로그램도 다시 설치해야하니.. 바쁘다..)
1. 플랫포머 게임 - 수정 사항
1. 레이저 퍼즐
- 레이저 타겟 매쉬 변경
광물 느낌의 메시를 찾아다녔는데.. 마음에 드는 메시가 없었다..
그래서 생각해낸 방법이 요즘 AI가 많이 발전했으니까 fbx 파일도 만들어줄려나? 하고 찾아보니 AI로 메시를 만드는 사이트가 있었다..!
참.. 기술의 발전이 빠르고.. AI가 무섭다..
아무튼 AI를 이용해 메시를 만들었는데, 생각보다 괜찮게 나와서 놀랐다.
이렇게 레이저를 광물쪽에 쏘도록 해주었다.
추가적으로 만약 레이저가 해당 액터를 만나게 되면, 타겟이 밝게 빛나도록 머티리얼을 도중에 바꿔주었다.
Meshy
편집할 모델을 선택하세요
www.meshy.ai
- 반사 오브젝트(거울) 및 레이저 큐브 상호작용
이전에는 레이저 큐브를 잡을 수만 있어서.. 레이저가 원하는 방향을 향하도록 바꾸는게 쉽지 않았었다..
때문에 F키를 눌러 큐브를 들고 있을 때, 1번 키와 3번 키 입력을 통해 좌우 회전을 하도록 만들어 주었다.
또, 거울도 회전할 수 있게 만들었고, 키는 동일하게 1번과 3번으로 구현해 두었다.
드디어 레이저 퍼즐을 마들 준비가 된것 같아 구현하고 나서 마음이 들떳다.
- 반사 오브젝트(거울) 매쉬 및 머티리얼 변경
레이저 반사 기능을 만들고 나서는 이 액터가 거울이면 더 좋을거 같은데? 라는 생각이 들어서 만들게 되었다.
ㄴ> 약간 거울 미로도 만들어보고 싶었지만 지금 레벨에서 공간을 추가로 더 만들기에는 시간이 너무 오래걸릴거 같아서 하지 않기로 했다.
ㄴ> 다시 부트캠프 과제에 집중하기 위해서..
- 반사 오브젝트 블루 프린트 수정
레이저가 반사될 때, 특정 각도를 벗어나면, 레이저가 상하로 움직여서 너무 이상하게 보였다..
때문에 Cal Rottation을 해줄 때, z축 값은 제외해주었다.
그 결과 레이저가 상하 좌우로는 더이상 움직이지 않았다.
하지만 여전히 특정 각도 (입사 벡터, 반사 벡터간의 각도가 90도 일때)부터 레이저가 이상한 방향으로 반사되는건 여전했다.
때문에 이런저런 시도를 해보긴했지만.. 아직도 잘 모르겠다.
mirror vector를 사용하지 않고, 반사벡터를 직접 구해보기도 하고, normalize도 해보고... 했는데 잘 안된다...
때문에 우선은 각도를 지정해서 그 각도까지만 움직일 수 있게 막아두는것으로 마무리했다.
해당 부분은 시간을 두고 좀 더 해보고, 그래도 안된다면 게임 수학 강의를 들어본 다음에 다시 수정해볼 생각이다.
음... 사이각이 180도이면 이해하겠는데.. 90도인데 왜....
ㄴ> 아.... 새벽 2시 반까지 동기랑 같이 고민하다가 찾았다..!! ㅠㅠㅠㅠㅠㅠ
ㄴ> 박스 트레이스를 쏴줄 때 offset을 안줘서 거울에서 생성한 레이저의 박스트레이스가 다시 거울면에 맞아서 문제가 발생했던 것....
ㄴ> 에초에 영상을 보면서 제작할 때 레이저 액터의 방향 벡터를 가져와 곱해서 박스 트레이스 시작 점에 오프셋을 적용하는 거였는데, 거기다가 1을 넣어서 결국 방향 벡터 * 1 = 방향 벡터 가 되어버려 이런문제가 발생했다...
ㄴ> 레이를 쏘거나 물리 연산을 할땐 이런 오프셋도 잘 고려해야할 것 같다..... 암튼... 다행이다.. ㅠㅠ 같이 고민하고 찾아주셔서 고맙습니다 동기분들..!
2. 스켈레탈 메시에 소켓을 만들고 가방 장착하기
플레이어의 스켈레탈 메시에 소켓을 만들어주었다.
가방 액터와 충돌하면, 플레이어는 가방을 뒤에 장착한다..!
또, 해당 가방을 얻어야만 시간이 느려지는 능력을 사용할 수 있도록 수정했다.
- 스켈레탈 메시에 소켓 만들고, 프리뷰 보는 방법
스켈레탈 메시를 더블 클릭해 창을 열어주고, 위 사진처럼 원하는 본 위치에서 우클릭 후 소켓을 추가해주면 된다.
만들어진 소켓에 다른 메시를 붙여 확인해보고 싶다면, 소켓을 우클릭한 뒤 프리뷰 에셋 추가를 누르면 확인이 가능하다.
- 메시 피벗 위치를 영구적으로 바꾸기
우선 모델링 모드로 변경(Shift + 5) 한 뒤 XForm에서 Edit Pivot을 누르면 피벗 위치를 변경할 수 있는 기지모가 나온다.
해당 기지모를 옮긴 뒤 수락을 눌려주면, 해당 위치로 피벗이 영구 설정된다.
이 변경 사항은 해당 메시 전체에 적용되고, 스태틱 메시 파일 자체를 저장하도록 되어있다.
다시 메시를 생성해도 잘 적용된 모습을 볼 수 있다.
또, 스태틱 메시 파일을 저장하도록 *표시가 뜨는 것을 확인할 수 있다.
3. Dead Zone과 Check Point 구현하기
사실 도착하기 전까지 갔다가 실수해서 처음부터 다시 해야하는 것은 불편하다기 보다 오히려 좋은 부분이라 생각한다.
다른 플랫포머 게임들도.. 체크 포인트 없이 실수하면 처음부터 다시 올라가야하는 그.. 불편함이 오히려 게임을 더 도전적이게 만드는 요소이기도 한 것 같기 때문이다.
사실 DeadZone과 CheckPoint가 필요한 부분은 맵 밖으로 튕겨져 나갈때의 예외처리가 필요했기 때문이다.
하지만 우선.. 테스트 할 때 불편함도 줄이고, 나중에 난이도를 추가한다면, 체크포인트를 넣어주어서 난이도를 낮출 수 있을 것 같아 위처럼 장애물을 통과하면, 체크포인트를 만들어 해당 지점에서 다시 시작할 수 있도록 만들어 주었다.
사실 체크포인트는 단순 트리거 박스를 가진 액터이고, 플레이어는 다시 스폰하는게 아니라, 데드존에 진입하면 체크포인트 위치로 옮겨주는 형식으로 만들었다.
다른 방법으로 리스폰을 만들려했지만.. 우선 이정도로 마무리하려 한다.. ㅠ
4. 떨어지는 발판 수정
기존 일정 시간이 지나면 떨어지는 발판은 다시 스폰이 안되어서 게임을 무족건 재 실행해야 했는데, 드디어 오늘 다시 스폰을 해주도록 변경했다...
2. 마무리
반사 벡터를 고민하면서 게임 수학이 아직 부족하다는 점을 좀 많이 느꼈던것 같다..
(솔직히.. 이런 구현은 블루프린트로 하는 것 보다 C++로 하는게 훨씬 쉬운것 같다.. ;ㅅ; )
이외에는 피벗 위치 변경하기, 스켈레탈 메시에 소캣 만들고 액터 어태치 시키기 등 앞으로 자주 사용할 것 같은 여러 기능들을 알아보고, 사용해볼 수 있어서 좋았다.
또, 거의다 완성되어 가는 것을 보니 마음이 조금씩 편해지는 것 같다.. ㅎㅎ
사실.. 디테일하게 따지면 수정할게 많이 보이긴하는데.. 우선 아쉬운대로 슬슬 마무리하고 다음 공부를 하는게 좋을 것 같다는 느낌이 계속해서 든다.
지금 당장만해도 눈에 보이는 수정 사항은
- 레벨 전체적으로 라이팅 조절하기
- 고스트 효과가 플레이어가 움직일 때만 발생하게 하기
- 길로틴 버그 수정하기 (이건 크리티컬하네..; 이건 무조건 수정해야겠다.)
- 레이저 반사 수정하기
- 난이도 추가하기 및 데드존 다시 설정하기
- 얼음다리 구간 수정하기
- 사운드 넣기
- UI 추가하기
- 상호작용 가능한 오브젝트 아웃라인 그리기 등등...
하면 할 수록 아쉬운 부분이 너무 많이 보여서 다 하기에는 너무 끝이 없을거 같아서 슬슬 이정도에서 조금만 보완하고 마무리하려고 한다.
아쟈
'프로그래밍 > Unreal 부트캠프' 카테고리의 다른 글
TIL 2025.01.08 기록 (2) | 2025.01.08 |
---|---|
TIL 2025.01.07 기록 (0) | 2025.01.07 |
TIL 2025.01.03 기록 (3) | 2025.01.03 |
TIL 2025.01.02 기록 (0) | 2025.01.02 |
TIL 2024.12.31 기록 (1) | 2024.12.31 |