Unreal - 상호작용, 게이트와 버튼

TechN0·2025년 5월 10일
post-thumbnail

프로젝트 전 언리얼 써본적 없으니 연습부터...!


1. 상호작용 키(E) 구현

  1. /Interfaces 에Input Action IA_Interact 생성 후 벨류 타입을 부울로 설정

  2. IMC_Default 의 맵핑에 IA_Interact 를 추가해주고 E키를 등록

  3. 블루프린트 인터페이스 BPI_Interact 생성

  • 함수명 Interact 생성 후 인풋 추가
  1. BP_FirstPersonCharacter 이벤트 그래프 구현

실행후 E를 누르면 디버깅용 라인 트레이스가 나옴


게이트와 버튼 만들기

일단 세트장을 만들었다.

To do: 책장에 있는 파란 책을 인터렉션 하면 문이 없어짐

TMI: 문 구현이 ㅠ어려운거 같아 일단 프롭이 없어지는것으로 하고 나중에 문 구현하기로…

  • 결계로 쓸 블루프린트 클래스 (엑터 상속) 생성

  • 컴포넌트에 스태틱 매쉬를 만들고 사라지게할 프롭을 할당

  • 이벤트 그래프에서 커스텀 이벤트를 만들자

  • 결계 제거 버튼으로 쓸 블루프린트 클래스 (엑터 상속) 생성
  • 같은 방법으로 스테틱 매쉬로 쓸 프롭을 설정해줌
  • 클래스 세팅 → Implemented Interfaces → BPI_Interact 추가

  • 변수 하나 만들고 아래와 같이 참조변수(BP_Barrier)로

저 설정이 뭔가?

1. Instance Editable

  • 설명: 에디터의 Details 패널에서 해당 변수를 노출해서, 씬에 배치된 인스턴스마다 값을 다르게 설정할 수 있게 해 줍니다.
  • 용도:
    • 레벨 디자이너가 월드에 배치한 액터마다 색상, 크기, 속도 등의 값을 조정해야 할 때
    • 같은 블루프린트 클래스로 만든 여러 오브젝트가 약간씩 다른 초기값을 가져야 할 때
  • 작동 위치:
    1. 블루프린트 에디터에서 변수 선택
    2. Details 패널 → Instance Editable 체크
    3. 레벨 뷰포트나 World Outliner 에서 액터 선택 시, Details 패널에 변수 슬롯이 생겨 값을 변경할 수 있음

2. Expose On Spawn

  • 설명: 액터를 Spawn Actor From Class 노드로 생성할 때, 해당 변수를 스폰 핀으로 노출시켜 스폰 시점에 값을 지정하게 해 줍니다.
  • 용도:
    • 런타임에 액터를 동적으로 생성하면서, 생성 시점에만 결정되는 초기 파라미터(예: 목표 좌표, 주인 정보)를 넘겨주고 싶을 때
    • 생성 후에 따로 세터 함수를 호출하지 않고, 스폰 노드 하나로 초기화와 생성을 동시에 처리하려 할 때
  • 작동 위치:
    1. 블루프린트 에디터에서 변수 선택

    2. Details 패널 → Expose On Spawn 체크

    3. 다른 블루프린트나 레벨 블루프린트에서 Spawn Actor From Class 노드를 배치하면,

      해당 변수 이름으로 핀이 자동으로 추가되어 값을 연결할 수 있음

  • Event Interact 에 IsValid로 타깃 베리어를 검사해서 리무브 베리어를 호출

  • 다시 BP_FirstPersonCharacter 로

    인터페이스에 BPI Interact를 선택


ㅋㅋㅋㅋㅋㅋ 계속 작동을 안해서 고쳐보려고 쌩 쑈를했는데

책장안에 스위치로 넣을 책을 넣었는데 책장 충돌 범위가 책을 덮어버려서 였음….

이미 작동하는건데 고치려고 바보짓 30분함 ㅋㅋㅋㅋㅋ

근데 여기엔 문제가있다. 콜리전만 언에이블 해서 문 모양은 계속 그대로 남아있다.

  • 블루프린트 베리어의 이벤트 그래프에 setvisibility 노드를 연결해주면 해결

근데 그냥 뿅하고 사라진다.

너무 짜친다…

페이드 아웃을 넣어보자


물체가 사라지는 페이드 아웃

메터리얼을 투명 머터리얼로 수정하자

  • 디테일에서 Blend Mode 를 Opaque(불투명)에서 Translucent(투명)로 변경
  • Scalar Parameter노드를 추가하고 이름: Opacity, 값 0.1로 한 뒤 Opacity와 연결
  • BP_Barrier 에 변수 추가

    • 이름: DynMat
    • 타입: Material Instance Dynamic
  • 이벤트 그래프의 BeginPlay에 Dynamic Material 구현

  • 리무브 베리어 로직에 타임라인을 넣고 수정
    - Timeline 더블클릭 → 에디터 열기
    - Float Track 추가
    - 이름: Alpha
    - 길이(Length): 예 1.0초
    - 키포인트 두개 생성
    - Time = 0.0, Value = 0.0
    - Time = 1.0, Value = 1.0

RemoveBarrier 호출 시 바로 충돌이 꺼지고, Timeline을 따라 Opacity가 1→0으로 점점 줄어들며 메시가 사라짐

  • 사라진 엑터는 더이상 필요가 없음으로 효율을 위해 Destroy 해줌

근데 타임라인에 play, play from start 는 뭐가 다르지?

Timeline 컴포넌트에는 재생을 제어하는 두 가지 주요 노드가 있는데, 그 차이는 “현재 재생 위치(position)를 초기화하느냐 안 하느냐” 입니다:

  • Play
    • Timeline을 현재 위치(Timeline의 내부 커서)에서 앞으로 재생합니다.
    • 이미 한 번 끝까지 재생돼서 커서가 Duration(끝) 지점에 있다면, Play를 호출해도 아무 동작이 일어나지 않습니다.
    • 중간에 멈췄다면(예: Pause 후) 멈춘 지점부터 이어서 재생할 때 사용합니다.
  • Play from Start
    - Timeline의 내부 커서를 0초 지점(시작 위치)로 되돌린 뒤, 처음부터 재생합니다.
    - “항상 처음부터” 페이드아웃을 반복하고 싶을 때 이 노드를 써야 합니다.

play로 하면 이미 결계가 사라졌을때 또 버튼을 눌러도 반복은 안됨

play from start 는 반복시 없어진 결계가 또 나타나서 다시 사라짐

0개의 댓글