목차
- 부실 수 있는 액터 종류 늘리기
- Infinite loop detected 오류 해결하기
1. 부실 수 있는 액터 종류 늘리기
보물에서 했던 것처럼 베이스 블루프린트 클래스를 놔두고 자식 클래스들을 만들어 다양환 종류의 액터를 만들어보려고 한다.
부실 수 있는 액터를 만들기 위해서는 지오메트리 컬렉션들이 필요하다. 부실만한 매시를 찾고 프랙쳐모드에서 지오메트리 컬렉션들을 만들자.
저기 항아리를 부실 것이다. 항아리의 크기가 작기 때문에 너무 잘게 부술 필요는 없다.
제네레이트의 new 아이콘을 눌러 지오메트리 컬렉션을 만들자. 이름은 알아보기 쉽게 바꾸는 편이 좋다.
프랙쳐는 유니폼으로 하고 보로노이 사이트의 숫자를 줄였다. 그 다음 본의 색깔을 원래대로 되돌리자.
bone 을 검색해서 Show Bone Colors의 체크를 해제하면 된다.
이제 프렉쳐를 하면 이 지오메트리 컬렉션을 부실 수 있게 된다. 이러한 지오메트리 컬렉션을 여러개 만들고 부실 수 있는 액터를 그만큼 늘리면 된다.
3가지 다른 종류의 부실 수 있는 액터들을 만들었다.
2. Infinite loop detected 오류 해결하기
이대로 블루프린트 클래스들을 배치하고 테스트 하다 보면 아래와 같은 오류가 종종 발생한다.
해당 오류는 너무 많이 부서져서, 즉 한번 부서진 액터가 또 부서지고 부서져서 발생하는 오류이다.
한번 히트하면 다시는 히트하지 않게 바꿔주어야 한다.
비주얼 스튜디오로 들아가자.
class PRACTICE_API ABreakableActor : public AActor, public IHitInterface
{
private:
bool bBroken = false; // 액터가 부서졌는지 여부
}
불리언 변수 하나를 추가하여 해당 변수가 false일때만 함수를 작동하고 싶다.
void ABreakableActor::GetHit_Implementation(const FVector& ImpactPoint)
{
if (bBroken) return;
bBroken = true;
// 생략
다음과 같이 설정하여 함수가 중복 호출되는 것을 방지할 수 있다.
이렇게 해서 부술 수 있는 액터들을 완성하였다.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 45. 커스텀 컴포넌트 만들기 (0) | 2024.11.01 |
---|---|
[언리얼 실습] 44. 나이아가라 컴포넌트 모듈 추가하기 (0) | 2024.11.01 |
[언리얼 실습] 42. 다양한 보물이 나오게 하기. (0) | 2024.11.01 |
[언리얼 실습] 41. C++에서 액터 스폰하기 & 부서진 액터랑 충돌방지 (0) | 2024.10.31 |
[언리얼 실습] 40. 액터를 부수면 아이템 스폰하기 (0) | 2024.10.31 |