언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

블루프린트에서 OnHit 이벤트 사용

언리얼 엔진

이 글에서는 OnComponentHitEvent Hit 이벤트 를 사용하여 대미지를 적용하고 디스트럭터블 메시를 부수고 적중 위치에 충격을 가해 디스트럭터블을 밀어내도록 하여, 발사체에 맞아 적중 위치에 힘을 가하는 효과를 시뮬레이션해 보겠습니다.

이번 비법에서는 시작용 콘텐츠 를 포함한 블루프린트 일인칭 템플릿 을 사용합니다.

  1. 콘텐츠 브라우저 에서 프로젝트의 Content/Geometry/Meshes 폴더로 이동합니다.

  2. 1M_Cube 스태틱 메시에 우클릭한 다음 디스트럭터블 메시 생성 을 선택합니다.

    OnHit1.png

    이 스태틱 메시에서 디스트럭터블 메시를 만들어, 총으로 쐈을 때 산산히 부서지도록 하겠습니다.

  3. 디스트럭터블 메시 에디터 안에서, 프랙처 메시 버튼을 클릭한 다음 저장 을 누르고 창을 닫습니다.

    OnHit2.png

  4. 새로 생성된 디스트럭터블 메시 애셋에 우클릭 하고 애셋 액션 아래 다음을 사용하여 블루프린트 생성... 을 선택합니다.

    OnHit3.png

    새로 생성되는 블루프린트에 저장 위치와 이름을 지어줍니다.

  5. 새 블루프린트에 대한 블루프린트 에디터 안에서 컴포넌트 창에 Destructible 컴포넌트를 선택합니다.

  6. 디테일 패널에서 Physics 아래 Simulate Physics 박스를 체크합니다.

    OnHit4.png

    이제 이 블루프린트에는 물리 시뮬레이션이 적용됩니다.

  7. 디테일 패널에서 Events 아래 하단에서 OnComponentHit 이벤트를 클릭합니다.

    OnHit5.png

    그러면 이벤트 그래프가 열리고 새 노드가 추가됩니다.

    OnHit6.png

  8. Other Actor 핀을 좌클릭 으로 끌어놓은 후 FirstPersonProjectile 에 형변환 노드를 검색 추가합니다.

    OnHit7.png

    여기서 FirstPersonProjectile 라는 다른 블루프린트로 형변환 하여 디스트럭터블 메시를 맞추면 그것이 실제로 FirstPersonProjectile 블루프린트인지 확인하는 것입니다. 그렇다면 메시를 산산조각내는 부가 스크립트를 적용하면 됩니다. 그렇지 않다면, 아무 것도 하지 않습니다.

  9. Hit 핀을 끌어놓고, Break Hit Result 노드를 추가합니다.

    OnHit8.png

    Break Hit Result 노드를 통해 적중 결과와 그에 대한 온갖 종류의 정보를 접근할 수 있습니다.

  10. Break Hit Result 에서 Hit Actor 핀을 끌어놓은 뒤 Apply Point Damage 노드를 추가합니다.

  11. Apply Point Damage 노드에서 Base Damage100 으로, Damage Type ClassDamage Type 으로 설정합니다.

    OnHit9.png

    Apply Point Damage 노드는 입힐 대미지 양 뿐만아니라 입히는 위치도 지정할 수 있습니다.

  12. Apply Point Damage 노드에서 나머지 선을 아래와 같이 연결합니다.

    OnHit10.png

    모든 선을 연결하고난 그래프 모습은 위와 같을 것입니다.

  13. 블루프린트를 컴파일, 저장 후 닫습니다.

  14. 콘텐츠 브라우저 에서 블루프린트를 끌어 레벨에 놓습니다.

    OnHit11.png

  15. 플레이 를 클릭하여 에디터에서 플레이한 후 좌클릭 으로 큐브에 발사체를 발사합니다.

    에디터에서 플레이해 보면, 큐브에 발사체를 발사해서 맞으면 큐브가 대미지를 입고 부서질 뿐만 아니라 맞은 위치에 충격이 가해져 그 방향으로 날아가는 것이 보일 것입니다. 가해진 힘의 양은 FirstPersonProjectile 블루프린트 안에 정의되어 있으며, 여기서 Event Hit 노드를 통해 발사체에 무언가가 실제로 맞은 시점을 결정합니다.

  16. Content/FirstPersonBP/Blueprints 폴더의 FirstPersonProjectile 블루프린트를 엽니다.

    이미지를 클릭하면 더 크게 보입니다.

    이 블루프린트의 스크립트는 맞은 오브젝트가 물리 시뮬레이션이 적용되는 것인지 검사합니다 (우리 큐브 블루프린트는 적용되는 것입니다). 그렇다면 맞은 위치에 충격(Impulse)을 가합니다 (그 양은 녹색 박스 안에 정의되어 있는데, 50 으로 감소시켰습니다). 이 값을 조절하여 적중시 적용되는 충격량을 높이거나 낮출 수 있습니다.