Make Unreal REAL.
article thumbnail
이득우의 언리얼 C++ 게임 개발의 정석

 

섹션이 BATTLE 상태로 전환되면 일정 시간 후에 AI와 아이템 상자를 스폰하도록 한다.

 

타이머를 실행시킬 때 전달하는 FTimerDelegate에 등록할 함수를 선언한다.

  • FTimerDelegate는 일반 유니캐스트 델리게이트이므로 UFUNCTION() 매크로를 지정해주지 않아도 된다.

 

타이머를 실행할 때 FTimerDelegate 델리게이트를 전달하면 시간이 됐을 때 등록된 함수를 알아서 실행시켜 준다.

여기서는 별도 델리게이트를 선언하지 않고 FDelegate::CreateUObject() 함수를 이용해 즉석에서 델리게이트를 생성해 전달할 것이다.

 

 

AI와 아이템 상자가 생성될 시간을 선언한다.

 

타이머를 생성할 때 레퍼런스로 전달해 설정되는 FTimerHandle 관리 핸들도 선언한다.

 

 

필요한 헤더를 포함한다.

 

 

AI 생성, 아이템 상자 생성 타이머를 각각 등록한다.

  • FTimerHandle 타입의 관리 핸들을 레퍼런스로 전달해 설정한다.
  • FTimerDelegate::CreateUObjcet() 함수로 함수가 등록된 델리게이트를 즉석에서 만들어 전달한다.
  • 각 시간 이후에 델리게이에 등록된 함수를 실행하고 반복하지 않는다.

 

 

섹션 중앙에서 위로 88cm 위치에서 AI를 생성한다.

 

섹션 중앙의 반경 6m 이내의 랜덤 지점에서 높이 30cm인 곳에 아이템 상자를 생성한다.

  • FMath::RandPointInCircle(Radius) 함수로 반지름이 Radius인 원 내의 랜덤 지점을 가져올 수 있다.
  • FVector(FVector2D, float)을 하면 자동으로 3차원 좌표로 변환해준다.

 

 

이때, 새로 생성된 섹션에는 자동으로 내비게이션 메시 계산이 되지 않는다.

 

Project Settings > Engine > Navigation Mesh > Runtime > Runtime Generaton: Dynamic으로 변경해준다.

  • 이렇게 설정하면 새롭게 생성된 섹션에도 내비게이션 메시가 실시간으로 생성된다.

 

 

새로운 섹션에서도 AI와 아이템 상자가 생성되고 정상적으로 플레이어를 추격한다.

 

profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그