Unreal (316) 썸네일형 리스트형 Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-1 이번 섹션의 목표는 우선 애니메이션 동작을 가진 3인칭 캐릭터를 이용하여 적을 물리치는 게임을 만드는 것이다.플레이어는 사격 매커니즘을 가지고 사격을 하게 되며, 적은 사격 AI를 가지고 플레이어를 쫒아와서 사격을 하게 된다.적 섹션과 마찬가지로 먼저 체력을 0으로 만드는 쪽이 승리하게 된다. 또한 이번 섹션을 위한 각종 에셋팩이 강의자료로 올라와있으므로 해당 자료를 다운받아야 한다.그리고 강의가 언리얼 엔진 4.25 버전을 사용하고 나는 언리얼 엔진 5를 사용하므로 이 점에 유의하도록 하였다. 프로젝트 셋업하기우선 이번 프로젝트를 위한 자료를 다운받고 시작하자.각 자료를 압축을 풀고, 각 폴더의 내용을 하나로 합쳐주자. 해당 에셋은 하나의 프로젝트로 되어있다.이를 실행해주고 마이그레이션 기능을 통해 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-42 다듬기 및 마무리이제 마무리할 단계이다.그전에 몇가지 개선사항을 짚어보고 수정을 해보도록 하자. 첫 번째로 카메라 움직임을 더 부드럽게 조정해보자.이는 탱크에서 스프링암을 선택하면 볼 수 있는 지연 기능을 통해 조절할 수 있다.여기서 카메라 렉과 회전 렉을 활성화 해주었다.이러면 카메라가 약간 지연되면서 탱크를 부드럽게 따라오게 된다.이에 대한 수치는 카메라 지연 속도와 회전 지연 속도의 값을 조절하여 얼마나 지연 되서 따라오게 할 지 선택할 수 있다.해당 값 또한 정답이 없기에 개인의 취향에 맞게 테스트해보고 값을 선택하면 된다. 두 번째로 탱크가 죽은 뒤에도 포탑이 탱크를 향해 발사체를 발사하는 것을 수정해보자.이는 간단하게 bool 타입 변수를 선언해서 활용함으로서 해결할 수 있다. 탱크가 죽었을 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-41 카메라 셰이크이번엔 역동적인 움직임 연출을 위해 카메라 셰이크 기능을 추가해준다.이러면 발사체가 대상을 맞추면 카메라가 흔들리게 된다. 언리얼 엔진에는 카메라 셰이크를 위한 내장 클래스가 존재한다.우선 C++ 클래스가 아닌 블루프린트 클래스를 생성하는데, 이는 카메라 셰이크에 변수가 많아서 블루프린트 클래스에서 작업하는 것이 훨씬 쉽기 때문이다. 먼저 발사체가 부딪혔을 때의 카메라 셰이크를 만들어주자. 그리고 얼마나 흔들릴지 진동 값을 조절해주어야 한다.자세한 수치는 직접 테스트해보며 조정해보는 것이 좋다.우선 강의에서 나온 수치를 그대로 적용하였다. 각각의 변수는진동이 지속되는 시간, 카메라 흔들림이 시작될 때 까지의 시간, 카메라 흔들림이 종료될 때까지의 시간을 의미한다. 추가적으로 위치 진동의 값도.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-40 사운드발사체가 발사됐을 때와 탱크나 터렛이 죽었을 때의 사운드를 추가해주자.이를 위해 발사체에 발사시 사운드와 히트 사운드, 베이스폰에 데스 사운드 이렇게 총 3개가 필요하다.우선 발사체에서 사운드 변수를 선언해주자.사운드를 위해서 UBaseSound 타입 포인터 변수를 사용하게 된다. 같은 변수를 2개 사용하기에 앞에만 전방선언 해줘도 뒤에 변수는 해줄 필요가 없다.또는 미리 전방선언을 따로 해주는 방법도 있다. 그리고 베이스폰에서도 선언해주자. 이제 언리얼로 돌아가서 각각에 맞는 사운드 파일을 할당해주자.여기서 Launch Sound와 Hit Sound는 같은 걸로 할당해주었다. Death Sound의 경우 탱크와 터렛 각각에 할당해주어야 한다. 이제 사운드를 재생시키는 방법을 알아야 한다.사운드 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-39 죽음 파티클이번에는 폰이 죽었을 때의 파티클을 추가해주자.이를 통해 포탑이나 플레이어(탱크)가 죽었을 때 좀 더 실감나는 모습을 보여줄 수 있다.폰에 해당하는 포탑과 탱크 모두에 대해서 구현하기 때문에, 코드 작성은 BasePawn에서 하게된다. 그리고 이번에는 죽는 순간에 파티클을 생성해주는 것이기 때문에 SpawnEmitterAtLocation 함수를 사용하여 파티클을 구현하게 된다.이를 위해 우선 UParticleSystem 타입 포인터 변수를 선언해주자. 그리고 cpp 파일에서 구현하게 되는데 죽음에 관한 내용이므로 전에 작성해뒀던 HandleDestruction 함수에서SpawnEmitterAtLocation 함수를 작성하게 된다. 이제 언리얼로 돌아가서 죽음 파티클을 할당해주자.이는 탱크와 터.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-38 연기 궤적기존 발사체가 발사될 때 추가적으로 연기 궤적이 발사체에 붙어서 발사되도록 해주자.발사체를 따라 연기 궤적이 쭉 나타나야 하므로 발사체의 루트 컴포넌트에 추가적인 컴포넌트를 붙여주게 된다.이 또한 파티클 시스템이므로 우리가 사용할 컴포넌트는 UParticleSystemComponent이다.해당 컴포넌트에는 템플릿이라는 변수가 존재하며, 해당 변수를 통해 언리얼에서 우리가 사용할 파티클을 할당하게 된다.간단하게 Projectile 헤더에서 선언을 해주고 생성자에서 생성해주자.여기서 해당 컴포넌트를 실질적으로 사용하기 때문에 관련 헤더를 cpp내에 선언해줄 필요가 있다. 다음으로 전에 여러번 해봤듯이 CreateDefaultSubobject를 통해 생성해주고, 이를 루트컴포넌트에 붙여주자. 이제 언.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-37 타격 파티클 현재 발사체를 발사할 때 타격효과가 없어서 다소 심심하게 느껴진다. 이를 개선하기 위해 발사체에 대해 타격 파티클을 추가해주자. 파티클은 맨 처음 해당 강의를 위해 다운받은 자료에 기본으로 들어있는 것을 사용한다. 먼저 발사체 클래스에서 UParticleSystem에 대한 변수를 선언해주어야 한다. 컴파일을 하고 언리얼에서 위 파티클을 직접 할당해주자. 이제 할당한 파티클을 발사체가 무언가를 맞히는 순간 스폰함으로서 파티클을 사용하게 된다. 이를 위해 다음과 같은 함수를 사용한다. 해당 함수는 언리얼 공식 문서에서 가져온 내용이나, VScode 에서 해당 함수를 살펴보면 오버로드 된 함수가 추가로 존재하는 것을 볼 수 있다. 우리는 그 중에서 하나를 선택하여 사용할 것이며, 해당 함수는 다음.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 5-36 게임 오버 UHD 게임 승패 유무에 대해 간단하게 print string으로 표시했었지만, 이제 위젯으로 출력해보록하자. 이를 위해 기존 위젯을 복사하여 게임 승패용 위젯을 하나 만들어주자. 이후 Create Widget을 통해 위젯을 생성하고, 해당 return value에서 Display Text를 얻는 것이 가능하다. 또 Display Text에서 Set Text를 얻는 것이 가능하여 원하는 텍스트를 위젯을 통해 출력이 가능하다. 하지만 우리는 게임 승패 유무를 체크하는 bool 타입 변수를 사용하고 있지 않다. 이를 활용하여 게임 승패에 맞는 텍스트를 출력해줄 필요가 있다. 이때 사용할 수 있는 것이 Select 함수이다. 해당 함수를 통해 인덱스를 받고, 리턴 값 또한 원하는 것으로 조절이 가능.. 이전 1 ··· 20 21 22 23 24 25 26 ··· 40 다음