이전글에서 이것까지 한번에 하려했지만 생각보다 뭐가 있어서 이어서 작성한다

 

이번 목표는 빨간사람(플레이어X)이 특정 공을 바라보면 된다

 

날 바라봐
빨간사람의 블루프린트 파트1

Get All Actors Of Class with Tag가 핵심이다

 

Tick 이벤트 = 단순 매 프레임 실행 이벤트

 

Get All Actors Of Class with Tag = 말그대로 특정태그가 달린 액터녀석들을 찾는다~ 이말이다

                                             Actor Class에서 자신이 찾고자하는 액터의 블루프린트클래스를 선택해준다

                                             Tag 에서 우리가 찾고자하는 액터에 붙여준 태그를 써준다

                                             [태그명은 자신이 맘대로 지정 - 밑에 태그 붙이는 법 있음]

                                             

                                             

 

For Each Loop = 배열내의 모든 인덱스를 타겟으로 실행시키는 루프, 예를 들어 인덱스가 3개인 배열이 들어왔다치면

                       0번 인덱스를 타겟으로 실행 -> 계속 노드를 물고물어 실행이 끝나면 ->

                       다시 이곳 For Each Loop으로 돌아와서 1번 인덱스를 타겟으로 실행 ····· 이런식이다

                       ArrayElement에서 각 인덱스 요소를 반환하고

                       Array Index에서는 인덱스(번호)를 int형으로 반환한다

                       Completed는 마지막 인덱스까지 모든 반복이 끝났을때 실행되는거 같다

 

 

 

그럼 이제 찾고자하는 액터에 태그를 붙여야한다

 

 

원하는 액터를 선택 후 디테일창에서 태그항목을 찾아 + 를 눌러준다

 

 

 

Look at me는 붙어있는게 아니라 단독적인 단순 TextRender이다

원래 None이라고 되어있는데 이곳이 태그의 이름이다 자신이 원하는대로 작성한다 그럼 완료

 

 

다시 블루프린트로 넘어와서

빨간사람 블루프린트 파트2

For Each Loop에서 나온 Array Element를 받아와 위치를 구해서 "바라보고싶은 액터를" "바라보는 회전값을" 구해 세팅

 

설명은 이전글에 되있을듯..?

 

 

최종본 Print String은 그냥 넣었다

 

 

 

이 Get All Actors Of Class with Tag는 같은 종류의 액터가 많을시에 태그를 붙여 쉽게 찾을수 있다

 

태그가 없는 버전인 Get All Actors Of Class 함수도 존재한다 이건 이름대로 모든 액터를 찾는거일듯 하다

 

 

근데 Get All Actors Of Class는 연산량이 많아 느려진다고 한다

 

그래서 저렇게 Tick을 이용하는건 비추천이다 한번 받아와 객체를 저장해서 사용하던지 해야겠다~

 

참고로 블루프린트가아닌 c++환경에서는 훨씬 괜찮은 함수가 있는거 같더라

 

예시

빨간 사람이 플레이어를 계속 바라보게 했다

 

 

 

빨간 사람의 블루프린트

 

Find Look At Rotation이 핵심

 

Find Look At Rotation = Start에 자신의 Location, Target에 바라볼 액터의 Location 을 연결하면

                                Return으로 바라볼 회전 값이 나온다 이 회전 값은 얼마나 더 회전을 하라는 값이 아닌

                                타겟을 바라보았을때 그 자체의 Rotation 상태 값이

                                리턴 되기 때문에 Add Controller Yaw Inpu 이 아닌 Set Actor Rotation을 사용했다

 

Get Player Character = 플레이어를 가져온다 만약 플레이어가 아닌 다른 액터라면 그 액터의 위치를 넣으면 된다

 

Get Actor Location = 타겟의 Location을 리턴한다

 

 

별거 없당

Text Render라는 기능을 이용하면 아주 쉽게 렌더링할 수 있다

 

예시 1 (앞면)

 

예시 2 (뒷면)

 

 

"텍스트 렌더" 라는 액터가 있다

 

 

게임내에서 업데이트 되면서 값을 변경할 수 있다

 

예시 3 [플레이어와 거리를 나타냄]

 

아직 c++로는 진행을 못했기에..

 

 

Text Render : 액터

 

Set Text : 텍스트를 변경해준다

 

Distance Value : 내가 블루프린트내에서 만든 flaot  변수 ( 플레이어와의 거리를 가지고 있음 )

 

ToText(float) : 플롯을 텍스트형으로 변환해줌 ( 이런 형변환 정말 개 ㅡ편하다 )

 

※ string형과 text형은 다르다

 

저걸 Tick 이벤트에 연결해주면 계속 실행이 될것이다

 

+ Recent posts