오늘의 공부는 22시 16분에 종료되었습니다.
오늘 목표였던 "쉽게 배우는 C++ 언리얼 엔진 3D 게임 개발 기초" 3주 차 강의까지 진행하기를 완료했습니다.
진행하는 과정에 생각보다 다양한 디버깅 과정이 있었습니다.
Static Mesh Component의 Detail 요소가 보이지 않는 현상
언리얼은 디버깅이 유니티와 다르게 경고가 조금 부족한 것 같습니다.
코드 작성 시 더 신경 써야 할 것 같습니다.
StaticMeshComponent == CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
해당 코드를 잘못 입력해서 발생하게 된 현상이다.
따로 에러로 발생되지 않고
aticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));
잘못된 코드를 수정하고 컴파일 하니 정상적으로 보이게 되었다.
디버깅 연결 안 되는 현상
해당 부분은 포스트로 대체했습니다.
https://sonsazang.tistory.com/52
총알 충돌 이벤트가 작동하지 않는 현상
쉽게 배우는 C++ 언리얼 엔진 3D 게임 개발 기초 3주 차 영상에서 3-3까지 진행 후 버그를 잡으려고 하면서 알게 되었습니다.
로그를 찍어도 반응이 없는 걸 보고 어디선가 OnHit 이벤트를 감지하는 코드나 블루프린트가 있어야 하는데 아무것도 없는걸 보고
어딘가 로직에서 빠진 게 있나 해서 강의를 다시 봤습니다.
3-1 직접 TPS 캐릭터 만들어보기 강의에서 20:13에서 20:14가 되는 순간 갑자기 코드가 추가되어 있습니다.
흠.. 따로 설명도 없이 이렇게 한 프레임에 코드가 추가되면 강의도 빨라서 잘 알아보기 힘든데 다른 분들도 어려움을 겪을 수 있겠다 생각이 들었습니다.
추가된 코드
Bullet.cpp
void ABullet::BeginPlay()
{
Super::BeginPlay();
StaticMeshComponent->OnComponentHit.AddDynamic(this, &ABullet::OnHit); -> 이 부분 코드가 추가되었습니다.
}
저 중요한 이벤트 감지 코드를 인지하지 못하게 추가해서 발생한 에러였습니다.
수정 후 정상 작동 확인했습니다.
캐릭터가 움직이지 않는 현상
쉽게 배우는 C++ 언리얼 엔진 3D 게임 개발 기초 3주 차 영상에서 3-3까지 진행 후 버그를 잡으려고 하면서 알게 되었습니다.
3-2 직접 게임에서 조작해 보기 영상을 진행하면서 끝 부분에 캐릭터를 움직이고 마우스로 화면 전환도 하는데
제 플레이 환경에서는 작동하지 않아서 해결하게 된 부분입니다.
강의에서는 언리얼엔진의 향상된 입력 (Input Mapping Contexts) 시스템을 생성만 하고 블루프린트에 연결하면 자연스럽게 이동하는 방식인데
해당 부분을 동일하게 따라서 진행하면 아무 입력도 감지되지 않고 있었습니다.
하나씩 해결해 보겠습니다.
- Attack을 위한 설정입니다.
- 마우스 이동을 통한 Look을 위한 설정입니다.
- 이동 Move를 위한 설정입니다. 조금 어려울 수 있으나 원리는 간단합니다.
- 우클릭으로 Zoom을 위한 설정입니다.
코드는 강의에 나온 것으로 진행하면 문제없이 작동합니다.
정리
생각보다 강의를 진행하면서 어려움이 조금 있는 것 같습니다.
이 내용들 말고도 중간중간 찾았던 코드들이 몇 있던 기억이 있습니다.
강의 진행 속도가 빠른 건 마음에 들지만 노베이스나 아직 익숙하지 않은 사람들에겐 강의가 조금 어려울 것 같습니다.
감사합니다.