본문 바로가기

Unreal/Udemy 강의

(308)
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-31 행동 트리 태스크 및 시퀸스이제 AI가 실제로 앞뒤로 이동하도록 만들어보자.이를 위해 행동 트리에서 태스크를 생성해주어야 한다.이번 강의에서는 단순 이동을 테스트 할 것이기 때문에 Move To 태스크를 사용해보자. 이렇게 생성한 태스크는 시퀸스 아래에 위치하게 된다.시퀸스 아래에 할당한 태스크들은 해당 시퀸스 차례가 되면 순서대로 할당된 태스크들을 실행하게 된다. Move To 태스크를 더 자세히 살펴보면 어디로 이동할 것인지 위치 설정이 가능하다.여기서 우리가 전에 만들었던 블랙보드 키를 이용하여 PlayerLocation 지정이 가능하다. 이동 후에 잠깐 멈췄다가 다시 이동하는 것을 원하므로 Wait 태스크도 생성해주자.Wait 태스크 또한 얼마나 멈출 것 인지에 대한 값 할당이 가능하다. 플레이어..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-30 C++로 블랙보드 키 설정하기이제 블랙보드에서 게임플레이의 상태를 설정해서 AI가 그에 따라 행동할 수 있게 설정하는 블랙보드 키를 C++을 통해 직접 설정해보자.우선 블랙보드 창을 보면 다음과 같이 기본 키를 볼 수 있다. 그리고 VScode에서 GetBlackboardComponent() 함수를 통해 블랙보드 키 값을 설정하는 것이 가능하다.해당 함수를 사용하기 위해서는 관련 헤더를 포함시켜주어야 한다.해당 함수를 통해 플레이어의 위치를 벡터값으로 받아와보자.  이제 설정한 키를 새롭게 할당해보자.상단 New Key를 눌러서 할당하며, VScode 상에서 할당한 이름과 타입을 정확히 일치시켜주어야 한다.이후 실행을 시켜보면 해당 키에 다음과 같이 플레이어 위치 좌표가 뜨는 것을 볼 수 있다. 제대로 ..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-29 행동 트리 및 블랙보드언리얼에서 정교한 AI 행동을 위해서는 보통 행동 트리를 생성한다.이에 행동 트리와 여러 가지 변수를 저장하고 AI의 메모리와 비슷한 기능을 하는 블랙 보드도 같이 생성해주자. 이제 행동 트리를 확인해보면 다음과 같다. 우측 디테일 패널에서 생성했던 블랙 보드를 확인할 수 있고, 우측 상단에서 해당 블랙 보드 모드로 전환도 가능하다. 이제 해당 행동 트리와 블랙 보드를 통해서 우리가 기존에 구현했던 AI 기능을 구현하도록 할 것이다.이를 위해 기존에 작성했던 VScode의 내용은 주석처리해놓고, 행동 트리를 위한 변수를 하나 선언해주자. 해당 행동 트리를 실행하는 함수는 RunBehaviorTree이다.실행하기에 앞서 해당 행동 트리가 유효한 지부터 체크를 해주자. 그리고 언리얼로 ..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-28 AI 시선 확인하기전 강의에서 AI 시선 문제와, AI의 시야에서 벗어나게 되면 더 이상 AI가 쫓아오지 못하도록 해보자.AI의 시야를 체크하기 위해서는 LineOfSightTo 함수를 사용하게 된다.해당 함수를 통해 AI가 다른 액터(플레이어)를 볼 수 있는 지 없는 지에 대해 체크하고 이를 bool 타입으로 반환하게 된다. 만약 보이는 대상(플레이어)이 있다면 해당 대상에 포커스를하고 해당 대상을 향해 움직이게 되고,만약 보이는 대상(플레이어)이 없다면 포커스를 지우고 움직임 또한 멈추게 하자. 포커스를 지우는 방법은 ClearFocus() 함수를 통해 할 수 있다.여기에 매개변수로 포커스 우선순위에 대한 값이 들어간다.우리는 기존에 GamePlay를 기본 우선순위로 사용했기에 해당 값을 넣어주게 된..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-27 내비메시를 이용해 AI 이동하기이제 AI가 플레이어를 향해 쫓아오게 만들어보자.AI가 장애물을 피해 플레이어에게 올 경로를 찾을 수 있어야 하는데, 이는 Nav Mesh통해 하게 된다. Nav Mesh는 레벨에서 걸어 다닐 수 있는 공간인 메시로 A* Pathfinding 알고리즘을 사용한다.해당 메시 구역 내 경로를 계획하면 AI가 그 경로를 따라 움직이게 된다.이를 위해 우선 Nav Mesh를 배치해주자. Nav Mesh를 보이도록 하기 위해서는 좌측 상단의 Show 항목에서 Navigation 항목을 활성화 해주어야 한다. 그리고 전에 생성했던 BP_ShooterAIController가 가진 컴포넌트 중에 다음과 같은 컴포넌트가 존재한다. 해당 컴포넌트는 FMesh를 찾아서 우리로 하여금 경로를 생..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-26 AI로 조준하기저번 강의에 이어서 AI에 대해 더 자세하게 알아보자.이번엔 AI 포커스라는 것에 대해 알아보게 된다.AI 캐릭터들이 플레이어 캐릭터를 계속하여 포커스하며 시선을 따라오게 된다. 전 강의에서 생성만 했던 SHooterAIController 클래스에서 구현을 하게 되며, 해당 클래스에 BeginPlay 함수를 만들어주고 해당 함수에서 포커스를 하게 된다. 그리고 사용할 포커스 함수는 다음과 같다.포커스할 대상과 우선순위 값을 받는데, 보통 GamePlay를 기본으로 하므로 따로 건들지 않는다. 포커스할 대상은 우리 플레이어이기에 플레이어 폰을 얻을 필요가 있다.이는 UGameplayStatics에 속한 GetPalyerPawn 함수를 통해 얻을 수 있다.  플레이어 캐릭터는 인덱스가 0이므로..
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-25 AI 컨트롤러 생성하고 설정하기현재 적 역할을 위해 세워둔 캐릭터는 아무런 동작없이 가만히 서있기만 한다.생동감 넘치는 적을 표현하기 위해서 AI 기능을 부여할 필요가 있으며, 이번 강의에서 AI 작업을 위한 기본적인 세팅 작업을 복습하게 된다. 먼저 AIController C++ 클래스를 생성하자. 그리고 해당 AIController를 기반으로 한 블루프린트 또한 생성해주자. 그리고 해당 블루프린트 AIController를 우리가 사용할 폰의 디폴트 AIController 클래스로 할당해주자. 이제 플레이를하고 아웃라이너에서 해당 AIController가 검색되는 모습을 볼 수 있다.
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-24 이제 사망 애니메이션을 실제 게임플레이랑 연결해보자.전에 선언했던 bool 타입 변수인 Is Dead을 통해 사망 여부를 판별하기 위해 VScode에서 사망 여부를 판별하고 리턴해주는 블루프린트로 노출 가능한 함수를 작성해줄 필요가 있다. 블루프린트에 노출시키기 위해서는 UFUNCTION을 작성해주면 되고, 안에 내용은 BlueprintPure를 작성해주었다.BlueprintPure의 의미는, C++의 const와 유사하지만 더 강력한 의미로 간단하게는 실행핀이 없는 함수를 뜻한다.더 자세히 말하자면 실팽 핀이 없는 함수는 보통 호출하는 대상에 아무 영향을 끼치지 않고 결과만 받는 다는 것을 뜻한다. 예시로 속도를 얻기 위해 사용했던 Get Velcoity 함수 등이 있다.해당 함수 자체는 단지 속도만 ..