0. 개요

진척도를 대략적으로 알려줄 수 있는 기둥을 만들어, 해당 기둥에 도달하면 빛이 켜지도록 블루프린트로 구현한다.

 

 

1. 빛 기둥(Beacon)

(1) Checkpoint의 멤버 변수와 멤버 함수를 블루프린트에서 사용

	UFUNCTION(BlueprintCallable)
	void HandleGlowEffects();
	// 이미 도달했는가
	UPROPERTY(BlueprintReadWrite, SaveGame)
	bool bReached = false;

비콘은 체크 포인트의 C++ 코드를 사용하지만, 블루프린트 단에서 저장 기능을 포함하지 않는 단순 미관형으로 작동하게 할 것이다.

 

 

(2) 오버랩 바인딩을 관리하는 불리언 선언

	UPROPERTY(EditAnywhere)
	bool bBindOverlapCallback = true;

위의 불리언이 True일 때에만 구체 오버랩에 바인딩하도록 할 것이다.

비콘 블루프린트에서는 해당 불리언을 False로 만들어 구체 오버랩을 사용하지 않을 것이다.

 

 

(3) CheckPoint를 상속받는 BP_Beacon 블루프린트 생성

 

(3-1) 메시 지정

 

(3-2) bBindOverlapCallback을 False로 지정

 

 

(3-3) 비콘과 닿으면 빛나게 하기

Checkpoint.cpp의 Handle Glow Effects 함수를 발동한다.

머티리얼 인스턴스를 동적 머티리얼로 변경하는 함수이다.

머티리얼 인스턴스의 Glow 파라미터 값을 변경한다.

 

 

(4) 비콘이 빛나는 상황을 저장하기

Checkpoint의 bReached 변수는 SaveGame으로 지정되어 있으므로, 해당 값을 블루프린트에서 True로 세팅한다.

 

 

(5) 체크 포인트와 비콘이 빛날 때 외곽선을 표시하지 않기

void ACheckPoint::HighlightActor_Implementation()
{
    if (bReached == false)
       CheckpointMesh->SetRenderCustomDepth(true);
}