1️⃣ 알고리즘 코드카타
https://school.programmers.co.kr/learn/courses/30/lessons/155652#
[ 둘만의 암호 ]
🤖 AI 피드백
string을 find하면 O(N)
unordered_map을 find하면 O(1)
💭 회고
1. string으로 find를 쓰는데 npos가 에러나길래 찾아보니까 string::npos로 써야했다.
2. 특정 조건을 확인하기 전에 그 조건이 변경되는 코드가 있다면
조건 확인 전에 변경이 되어야 조건 확인에 반영할 수 있다는 부분을 놓쳐서 테스트 케이스 일부 실패했다.
2️⃣ 플랫폼 퍼즐 게임 만들기
💥문제1_Destroy 함수 오버라이드
▪️상황
충돌한 액터를 Destroy 시키는 블루프린트를 제작하려고 Destroy를 virtual override로 선언
(수업에서 배운 액터 라이프사이클을 떠올리지 못함)
virtual void Destroy() override;
▪️해결
언리얼 엔진에서는 AActor::Destroy() 함수가 UFUNCTION()으로 선언되어 있어서, 직접 override하면 문제 발생
Destroyed()와 EndPlay() 사용하기!
💥문제2_Collision Block
▪️ 상황
1. Box Collision의 콜리전 프리셋을 OverlapAll로 하고
Flight Comp의 콜리전 프리셋을 BlockAll로 했더니
디폴트 폰으로 설정된 BP_DropPawn이 생성 안된는 현상 발생
2. Box Collision의 Block은 잘 되지만
Box Collision의 자식들은 Block이 적용되지 않음(Flight Comp나 Flight 밑에 추가한 콜리전도)
▪️ 해결..?
1. 루트 컴포넌트인 Box Collision과 겹쳐 있는 상태여서 충돌이 일어난 것으로 추정
2. Physics simulate를 활성화한 액터와는 block이 잘 먹힘
장애물에 밀려서 뒤의 Destroy Actor를 하는 콜리전에 닿으면 소멸되게 하려 했지만
Collision 설정이 복잡하여 그냥 플랫폼 오버랩으로 닿으면 죽는 것으로 변경
🔹New Knowlodge
▪️OnComponentHit
1. 제대로 작동시키기 위해선 콜리전 프리셋이 Block
2. Simulate Physics 활성화
//함수바인딩_cpp
MyMesh->OnComponentHit.AddDynamic(this, &ABasePlatform::OnComponentHit);
//함수 시그니처
UFUNCTION()
void OnComponentHit(
UPrimitiveComponent* HitComponent, // 충돌한 컴포넌트
AActor* OtherActor, // 충돌한 다른 액터
UPrimitiveComponent* OtherComp, // 충돌한 다른 액터의 컴포넌트
FVector NormalImpulse, // 충돌로 인해 발생한 힘
const FHitResult& Hit // 충돌 정보
);
▪️컴포넌트 태그
if (OtherComp->ComponentHasTag(TEXT("SpecialZone")))
{
UE_LOG(LogTemp, Warning, TEXT("SpecialZone 태그가 있는 컴포넌트와 충돌"));
}
💭회고
어제부터 씨름했던 Collsion Block은 포기..!
막히면 될 때까지 부딪히는 것도 방법이지만
돌아가는 것도 방법이다.
내가 개발한 게임인데 기획 좀 바꾸면 어떠한가
게다가 과제라서 movement 컴포넌트와 피직스 시뮬레이트를 꺼야하기에
제한도 있으니 돌아가는게 맞는 것 같다.
'TIL' 카테고리의 다른 글
[250204 TIL] 드론 만들기 끝! | 자료구조 | 연결 리스트 (0) | 2025.02.04 |
---|---|
[250203 TIL] 블루프린트로 깜빡이는 조명 만들기(by sin 함수) (0) | 2025.02.03 |
[250130 TIL] SetTimer에 사용할 함수의 반환형은 void여야 함 (0) | 2025.01.30 |
[250129 TIL] 드론에 Roll 적용하기(feat 모델링 병합/분리/피봇설정) (0) | 2025.01.29 |
[250128 TIL] 폰으로 드론 제작하기 AddActorWorldOffset의 FHitResult (0) | 2025.01.28 |