발견되는 편지 구조 설정

트리거 조건과 연출은 전부 다르게 설정할 거지만 공통된 흐름을 정함 

트리거 조건 -> 연출 -> 쪽지 노출

BrightLetter 설계

발견하기 전까지는 거기에 쪽지가 있는 걸 모르게 해야 함

-> 생성자에서 메시를 안 보이게(SetVisibility(false)) + 라인트레이스에 안 잡히게(SetCollisionEnabled(NoCollision)) 처리하고 컨테이너가 연출을 끝낸 후 Reveal()을 호출하면 그제서야 보이고 상호작용 가능한 상태로 전환됨

ABrightLetter::ABrightLetter()
{
    ItemType = "BrightLetter";
    
    StaticMesh->SetVisibility(false);
    StaticMesh->SetCollisionEnabled(ECollisionEnabled::NoCollision);
}

void ABrightLetter::Reveal()
{
    if (bRevealed) return;
    
    bRevealed = true;
    
    StaticMesh->SetVisibility(true);
    StaticMesh->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics);
    
    StaticMesh->SetEnableGravity(true);
    StaticMesh->SetSimulatePhysics(true);
}

 

SetEnableGravity(true)는 SetSimulatePhysics가 켜지기 전까지는 작동하지 않는 옵션이라 미리 켜놔도 무방하다는 걸 튜터님께서 알려주심 : SimulatePhysics가 전제 조건이고 EnableGravity는 그 전제 위에서만 의미를 갖는 스위치

 

ActivateItem에서도 bRevealed가 false면 바로 리턴하게 가드를 넣어서 혹시 모를 예외 상황에서도 숨겨진 쪽지가 반응하지 않도록 막아둠

메시 작업

편지지 텍스처는 텍스트 없이 질감/모양만 남긴 PNG로 분리 제작

(실제 편지 내용은 메시가 아니라 상호작용 시 뜨는 UI 위젯에서 담당하는 구조를 유지) 

 

Content Browser에 PNG 파일 드래그 드롭

 

  • PNG를 언리얼에 임포트 (Content Drawer 드래그)
  • 파일 우클릭 후 Create Material 클릭 ->  텍스처와 자동으로 연결된 머티리얼이 생성됨
  • 생성된 머티리얼 더블클릭해서 머티리얼 에디터 열기
  • Bright 쪽 머티리얼은 가장자리 투명 처리가 필요해서 Blend Mode를 Masked로 설정하고 Texture Sample의 Alpha 채널을 Opacity Mask에 연결
  • BP_DarkLetter, BP_BrightLetter의 Element 0 슬롯에 적용

 

+ Recent posts