본문 바로가기

전체 글29

[AI] 비헤이비어 트리 기초 Key 사용법 // .h 파일 UCLASS() class SWORDORGUN_API UBTService_DetectByPerception : public UBTService { GENERATED_BODY() public: UBTService_DetectByPerception(); static const FName TargetActorLocation; static const FName TargetActorLength; // 상수로 사용함으로써 오타 방지, 프로젝트 전체에서 사용 가능 protected: virtual void TickNode(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory, float DeltaSeconds) override; }; // cpp.. 2024. 2. 11.
[델리게이트] 정적-1개, 동적-멀티 델리게이트의 차이 FScriptDelegate DECLARE_DYNAMIC_MULTICAST_DELEGATE 정적 vs 동적 선언 정적으로 델리게이트 선언 -> 컴파일 타임에만 델리게이트가 생성됨 주로 C++코드에서 다른 C++코드에 대한 이벤트 처리에 사용 동적으로 델리게이트 선언 ->런타임 중에도 델리게이트에 대한 함수 바인딩 및 이벤트 등록이 가능 주로 블루프린트와 C++코드 간 상호작용에 사용 블루프린트 호환성 C++클래스에서 블루프린트 클래스로 노출시켜야 사용가능함 블루프린트 클래스에서 노출할 수 있고, 델리게이트에 함수를 바인딩하고 이벤트에 대한 리스너 추가 가능 멀티캐스트 지원 멀티캐스트 이벤트를 직접 지원하지 않아 한 번에 한 개의 리스너만 호출 한 번에 여러 리스너가 호출될 수 있음 2024. 2. 11.
[델리게이트 패턴] 아이템 습득 구현 충돌 관계는 캐릭터 - 아이템 클래스 사이에 Overlap으로 설정해둔다. 이건 지뢰 클래스인데, 오버랩 됐을 때 파티클을 실행하는 건 같아서 그냥 이걸로 포스팅하겠다.. void ASLandMine::BeginPlay() { Super::BeginPlay(); ... if (false == OnActorBeginOverlap.IsAlreadyBound(this, &ThisClass::OnLandMineBeginOverlap)) { OnActorBeginOverlap.AddDynamic(this, &ThisClass::OnLandMineBeginOverlap); } } 내 경우에는, 지뢰에 캐릭터가 오버랩되면 OnLandMineBeginOverlap()함수를 실행하도록 하였다. 이를 위해서 OnActor.. 2024. 2. 7.
[Anim_Notify] 파티클 생성 (UAnimNotify_PlayParticleEffect) TPS게임을 만들던 도중 총구에서 총쏘는 파티클이 생성되게 해야 하는데, 파티클의 위치를 고정하기 위해 파티클 노티파이를 클래스로 생성했다. UAnimNotify_PlayParticleEffect 클래스의 멤버 변수 uint32: 1 Attached 소켓에 붙어있는지 여부 판단 FVector LocationOffset 소켓으로부터의 위치 오프셋 UParticleSystem PSTemplate 생성할 파티클 시스템(파티클 자체라 생각하면 됨) FRotator RotationOffset 소켓으로부터의 회전 오프셋 FVector Scale 생성할 파티클 시스템의 크기 FName SocketName 파티클을 붙일 소켓 이름 멤버 함수 UParticleSystem SpawnParticleSystem ( USkel.. 2024. 2. 6.
[백준 14888번/C++] 연산자 끼워넣기 - 백트래킹 백트래킹 기본문제와 틀은 같으나, 최댓값과 최솟값을 저장할 set을 추가했고 첫 for문은 연산자 수만큼 반복했다. set은 중복값을 저장하지 않고 검색이 매우 빠르며 자동으로 수를 오름차순으로 저장해주기에 용이했다. 답 #include #include #include #include using namespace std; int N{}, tmp{}; int arr[12]; // 입력받은 숫자를 저장하는 배열 int middle[12]; // DFS 중간 중간에 값을 저장하는 배열 vector Operator(4); // 처음 입력받은 연산자 개수를 저장하는 배열 vector visited(4); // DFS를 하며 변화하는 연산자 개수를 저장하는 배열 // 그런데 지금 쓰고보니 이 배열은 쓰지 않아도 됐.. 2024. 2. 5.
[백준 1927번/C++] 최소 힙 priority_queue에 그냥 greater를 붙이면 될 줄 알았는데 초기화에 기본 컨테이너(vecter가 될 수도 있고 deque일 수도 있음)를 넣어줘야 한다. 답 #include #include #include #include using namespace std; int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int N{}, tmp{}; cin >> N; priority_queue queue; for (int i = 0; i > tmp; if (tmp == 0) { if (queue.empty()) { cout 2024. 2. 5.