프로그래밍 공부
작성일
2024. 1. 29. 16:42
작성자
WDmil
728x90

전에 만들었던 HP_Bar위젯을 머리위에 띄울 것 이다.

먼저, BP_Enemy로 이동하여,Mesh에 상속되는 WIdget을 생성한다.

이 위젯 컴포넌트 에서 객체를 미리 할당하고, 제어할 것 이다.

 

생성 한 뒤, 디테일 창으로 이동한다.

디테일 창 에서 객체의 UserInterface를 통해 생성한 Widget 의 객체를 설정해줄 수 있다.

내부 세부사항은 위와같이 설정하여, 드로 사이즈를 정의해준다.


Health_Bar

체력바의 이벤트 그래프를 정의한다.

커스텀 이벤트를 만들고, 인풋값으로 Health를 받아온 다음, 호출마다 HealthBar의 %를 바꾸어준다.

예시에서는 100 을 최대치로 정의하였지만, 전체 체력을 따로 받아와서 1을 최대치로 정의해주어도 된다.


체력값 조정

 

커스텀 이벤트를 정의하였음 으로, 일정 행위가 실행될 때 마다 HealthBar를 업데이트 해주면 된다.

BP_Enemy의 함수를 새로 정의해주자. UpdateHealthBar를 새롭게 정의해주고, Health_Bar을, Widget으로 가져온 다음, 형변환 한 뒤 객체의 커스텀 이벤트를 실행해주면 된다.

 

필요 할 때마다 실행시켜 주면 된다.

BP_Enemy이밴트 그래프의 실행시마다, Damage이벤트를 실행하고, Damage이벤트에

위와같이 이어주면, 데미지마다, 체력바가 업데이트된다.


테스트


데미지 이벤트 처리

 

이제 힛 이벤트 처리마다, Enemy의 행동을 처리해주어 보자.

먼저, 객체의 Material을 잠깐동안 빨갛게 칠할것 이고, 공격한 상대방을 피격체가 바라보게 만들 것 이다.


공격체 방향으로 회전

위와같은 블루프린트를 정의해보자.

 

공격자를 받아온 다음, 스스로와 상대객체를 참조하여, 바라보는 방향을 계산한 다음, SetActorRotation을 통해 자기자신의 방향을 전환해주면 된다.


테스트


피격체 머티리얼 변환

 

SetMaterials라는 노드를 만든다.

위 노드에서는 실행 시, CreateDynamicMaterialInstance를 하여, 지정된 객체의 인스턴스를 생성하고, 배열로 받아온다.

해당 배열을 통해 머티리얼을 변환 할것이다.

머티리얼에 대한 배열을 가져와서, 객체를 SetMaterial을 통해 바꿔준다.

 

새롭게 생성한 인스턴스 객체를 배열에 넣어놓았음으로, 배열의 값을 수정하면 머티리얼이 바뀔것이다.


Change_Color

색을 바꾸는 함수를 정의해보자.

인풋으로 받아오는 Color값을 바탕으로, Materials에 대한 객체값을 참조하여, for문으로 전방위 순환. 순환된 값의 컬러를 받아온 Color로 바꾸어준다.

 


ChageColor

 

색을 바꾸어주는 노드를 만들어보자.

Material을 바꾸는 함수는 ChangeMaterial을 만들어 놓았음 으로, 처음에 값을 바꾸어주고, Delay이후에 다시 원상복귀 시켜주면 될 것 이다.

Defalut값 참조

위와같이 지정된 값으로 다시 바꾸어주어도 되고, 원본값을 따로 가져온 다음 그 값을 참조해주어도 된다.

원본값 참조


테스트

 

 

728x90