Unreal (316) 썸네일형 리스트형 Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-17 플레이어 뷰포인트이번 강의에서는 플레이어의 관점에서 사물을 보는 방법을 배우게 된다.주 목적은 뷰포트의 위치와 회전이 우리가 기대하는 것과 일치하는 지 확인하여 만약 레이트레이싱을 할 때 제대로 사물을 가리키게 되는지 체크하는 것이다.이를 위해 디버그 카메라를 그려보고 해당 디버그 카메라가 어떻게 그려지는 지 체크해보자.DrawDebugCamera 함수를 통해 작성하며, 인자로는 UWorld(), 위치, 회전, 각도, 스케일, 색깔, 지속 여부를 넣어준다. 이를 컴파일하고 마우스 좌클릭을 통해 카메라가 어떻게 찍히는 지 체크해보자. 위 사진과 같이 마우스 좌클릭시 카메라의 방향이 우리가 바라보는 방향과 다른 것을 알 수 있다.따라서 우리는 플레이어의 뷰포트 값으로 적용시켜줄 필요가 있다.플레이어 뷰포인트.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-16 파티클 이펙트 스포닝하기 (spawning)지금은 마우스 좌클릭을 하면 로그 메시지만 출력되는 상태이다.이번엔 총을 발사했을 때 나오는 파티클 이펙트를 스포닝되도록 해보자. 우선 파티클 이펙트가 어디서 스포닝될지 확인해보자.원본 Rifle 파일을 들어가보면 확인이 가능하다. 해당 위치를 참고하여 파티클 이펙트를 스폰하게 되며, 이때 사용하는 함수는 SpawnEmitterAttached 함수이다.해당 함수는 UGameplayStatics에 속한 함수이기에 해당 헤더파일을 선언해줄 필요가 있다.또 인자로 파티클 시스템, 붙을 대상 컴포넌트, 붙을 곳의 이름을 받게 된다.파티클 시스템은 따로 헤더에서 선언하고 언리얼에서 할당하도록 해준다. 이제 언리얼에서 원하는 파티클을 할당해주자. 이제 플레이를 해보면 마.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-15 사격 아키텍처총을 만들었으니 이제 총을 직접 사용하는 방법을 알아야 한다.일단은 마우스 버튼을 누르거나 트리거링을 하면 로그 메시지가 출력되도록 해보자 이를 위해서 우선 Gun 클래스에서 트리거 함수를 작성한다.트리거 함수에는 로그 메시지를 작성하는 내용을 넣어준다. 해당 함수는 인게임에서 마우스 좌클릭을 하면 동작해야 할 것이다.이를 위해 마우스 좌클릭에 대한 액션 매핑을 작성할 필요가 있다.또한 이에 대한 함수도 작성해야 할 것 이다. 우선 함수의 경우 캐릭터 클래스에 이미 Gun에 대한 포인터가 있으므로 해당 값을 통해 PullTriger 함수를 호출해준다. 이제 프로젝트 세팅으로 돌아가서 액션 매핑을 할당해주자. 이후 바인딩 작업도 예전과 같이 해주자. 이제 컴파일을 하고 플레이를 하면서 좌클릭을.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-14 소켓을 통해 메시에 부착하기만든 총을 부착하기 위해서는 기존에 있던 총을 제거하거나 안보이도록 감추는 작업을 해주어야 한다.우선 총이 스켈레톤 메시의 어느 부분에 해당하는지 체크해보자. 이제 해당 메시를 C++ 에서 잡아주는 작업을 해보자.GetMesh() 함수를 통해 해당 메시를 얻는 것이 가능하다. 이후 얻은 메시를 감춰주어야 하는데, 이는 HideBoneByName 함수로 가능하다.해당 함수는 감출 대상의 이름과, EphysBodyOp 이라는 변수를 받는다.PBO_None을 작성함으로서 디폴트값 표시가 가능하다. 기존 weapon_r의 위치를 사용하기 위해 해당 위치에 소켓을 생성해주자.해당 소켓은 끼워 넣을 수 있는 지점을 나타내게 된다. 이제 해당 메시를 생성한 소켓 위치에 붙여주는 작업을 해야.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-13 런타임에 액터 스포닝하기(spawning)저번에 만든 총을 이제 캐릭터에 연동할 차례이다.이를 위해 우선 런타임 동안에 소총을 스포닝하는 방법을 알아보자. 액터 스폰에 대해서는 UWorld에 속한 SpawnActor 함수를 통해 스폰하게 된다.총은 게임이 시작되자마자 캐릭터가 가지고 있어야 하므로 BeginPlay에서 해당 함수를 작성하게 된다.해당 함수는 템플릿 함수이므로 우리가 사용할 총의 타입인 AGun을 넣어준다.다음으로 인수를 받는데, 인수는 클래스로 받는 것이 가능하다. (UClass 타입) 기본적으로 우리는 C++에서 스폰 작업을 하지만, 여기서 해당 Gun의 블루프린트 하위를 스폰하게 된다.이를 위해 블루프린트에 후킹할 방법을 알아야한다.C++에서 직접 후킹하는 것은 어려우므로 다른 방법을.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-12 건(Gun) 액터해당 게임은 총을 사용한 슈터 게임이다.따라서 캐릭터는 총을 가지게 되므로 이번 강의에서는 총 액터를 생성해주는 작업을 해본다. 기존 캐릭터를 보면 총이 이미 존재하지만, 기본적으로 슈터 장르의 게임에서는 여러 총을 사용하기 위해 총이 교체 가능해야 한다.따라서 따로 총 액터를 생성하고, 이를 캐릭터의 하위로 할당하여 사용하게 된다.먼저 총을 생성하는데 총은 캐릭터나 폰의 기능이 필요없으므로 단순 Actor 클래스로 생성하게 된다. 그리고 해당 클래스에 대한 블루프린트도 미리 만들어두자. 다음으로 해당 총의 루트가 될 SceneComponent와 이에 어태치하여 사용할 Mesh를 선언해주자.이때 Mesh는 총이 어떤 이유에서인지 스켈레톤 메시로 작성되어있기 때문에 스켈레톤 메시로 선언해주.. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-11 애니메이션 속도 계산하기현재 애니메이션의 속도와 캐릭터의 속도가 같지 않아서 마치 발이 미끄러지는 듯한 현상이 관측되는 것을 볼 수 있다.이를 개선하기 위하여 애니메이션의 속도를 계산해보자.이를 위해 우선 앞으로 달리는 애니메이션 모습을 체크해보자. 우리가 앞으로 달리는 애니메이션에서 체크해야할 것은 발의 움직임이다.발이 지면에 붙은 순간의 시간과 발이 지면에서 떨어진 순간의 시간을 이용하여 해당 움직임의 속도를 구할 수 있다.아래 표시한 마커의 소수점이 해당 시간을 나타낸다. (0.26) 그리고 추가로 속도를 구하기 위해 해당 발 움직임의 위치가 필요하다.우측 상단을 보면 Location을 확인할 수 있는데 로컬 좌표계로 보면 위치가 그대로인 상태에서 회전만 하는 것이기에 위치의 움직임을 구하는 것이 .. Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-10 벡터의 역방향 트랜스폼이번엔 애니메이션의 회전을 적용시킬 차례이다.이를 위해서 트랜스폼에 대한 이해도를 높힐 필요가 있다. 먼저 월드 좌표계와 로컬 좌표계가 존재하며, 월드 좌표계는 베이스가 월드의 중앙이고 로컬은 해당 액터가 중심이 된다.따라서 위치는 상대적이게 되며 월드 좌표계를 기준으로 두면 월드의 중심에서 액터가 움직인 것이고, 로컬 좌표계를 기준으로 두면 액터가 중심으로 월드의 베이스 위치가 달라지게 되는 것이다.이러한 것이 글로벌 공간과 로컬 공간 간의 트랜스폼이 된다. 우리가 필요로 하는 것은 현재 플레이어의 각도이므로 로컬 좌표계의 각도가 필요한 것이다.이는 기존의 Get Velocity 함수를 통해 얻은 속도를 이용하여 방향을 얻는 것이 가능하다.해당 속도를 통해 어떤 방향으로 가는지, .. 이전 1 ··· 18 19 20 21 22 23 24 ··· 40 다음