Event/Event Binding2017. 10. 29. 14:55

Event Binding을 통해 클래스 블루프린트에서 레벨블루프린트 내의 커스텀 이벤트 호출하기


클래스 블루프린트에서 Event Dispatcher 를 생성하고 파라미터 자료형을 설정하고 드래그하여 이벤트 디스패쳐 호출 노드를 생성하고 파라미터에 값을 입력한다. 아래는 EvtDisp 란 이름의 이벤트 디스패쳐를 생성한 경우이다


레벨블루프린트에서 연결하고자 하는 액터의 참조를 구하여 노드를 생성한 후 연결핀을 드래그하여 [EvtDisp에 이벤트 바인딩] 항목을 선택한다



이벤트 바인딩 노드에서 이벤트 핀을 드래그하여 놓고 [Custom Event 추가...] 항목을 선택한다


커스텀 이벤트 이름을 지정하고 로직을 작성할 때 수신된 파라미터를 사용할 수 있다

아래의 내용은 Cube_Blueprint 클래스의 이벤트 디스패쳐와 레벨블루프린트의 MyCustomEvent 가 바인딩되어 있는 예이다. 

BeginPlay 이벤트가 호출되면 Cube_Blueprint 클래스의 이벤트 디스패쳐와 레벨 블루프린트의 커스텀 이벤트인 MyCustomEvent 가 서로 바인딩되고 Cube_Blueprint 클래스에서 호출하면 실행될 준비가 된 상태이다


게임을 실행하고 클래스 블루프린트에서 EvtDisp 이벤트 디스패쳐가 호출되면 레벨블루프린트에 작성된 MyCustomEvent 가 호출되며 전달된 파라미터도 사용할 수가 있다

Posted by cwisky
Billiard/Object Outline2017. 10. 28. 16:18

오브젝트 외곽선을 밝게 하는 효과(Outline Highlight)




Post Process Volumn 안에서 사용될 머티리얼을 설정한 후에 볼륨 안에 오브젝트를 넣고  Mesh의 속성 중에서 Rendering / Render CustomDepth Pass 항목에 체크하면 오브젝트가 Post Process Volumn 안으로 들어가는 경우에는 지정된 Post Process Material 이 적용되어 다른 효과를 낼 수 있다.

Rendering / Render CustomDepth Pass 항목을 선택해제한 후에 블루프린트에서 Set Render Custom Depth 노드를 사용하여 동적으로 Post Process Material 을 적용할 수 있다. 아래에 소개한 내용은 Post Process Volumn 안에서만 작동하므로 하이라이트 효과를 내려는 오브젝트는 Post Process Volumn을 적용해야 한다. 



Post Process Material 생성

  1. 컨텐트 브라우저에서 Material을 생성하고 M_OutlingHighlight 등의 이름을 설정한다
  2. 생성된 머티리얼을 더블클릭하여 머티리얼 에디터를 연다
  3. 머티리얼 에디터의 그래프에 디폴트로 생성된 머티리얼 기본노드를 선택한다
  4. 왼쪽 [디테일] 뷰 / Material / Material Domain 항목에 Post Process 를 선택한다
  5. 왼쪽 [디테일] 뷰 / Post Process Material 항목에 Before Translucency를 선택한다
  6. 머티리얼 그래프를 작성한다 (아래의 그림 참조)



Post Process Volumn에 Post Process Material 설정하기

  1. Post Process Volumn을 레벨 위로 드래그하고 크기를 적당히 설정한다
  2. 레벨에 놓인 Post Process Volumn을 선택하고 Rendering Features / Post Process Materials 항목에서 + 아이콘을 누르고 입력란을 생성한다
  3. [선택] 콤보박스를 누르고 [에셋레퍼런스]를 선택하고 CB에 생성되어 있는 하이라이트용 머티리얼을 입력한다



Post Process Material 효과내기

  1. 머티리얼을 적용할 메시를 선택하고 Rendering 패널의 Render CustomDepth Pass 항목에 체크하면 에디터 상에서도 효과가 나타난다. 이때 플레이어 폰이 Post Process Volumn 안에 들어와 있어야 한다
  2. 블루프린트를 이용하여 게임실행시에 효과를 내려면 Render CustomDepth Pass 항목의 체크를 해제한다
  3. 블루프린트에서는 해당 오브젝트의 메시를 타겟으로 Set Render Custom Depth 노드를 사용하여 Value 에 체크하면 실행시에 효과를 낼 수 있다



아래의 블루프린트는 머티리얼 에디터의 그래프 내용이다. 오브젝트의 외곽선에 특정색의 하이라이트 효과를 내기 위한 것이며 이 페이지 위쪽에 명시된 페이지를 참조하여 언리얼 4.16.3 버전에서 작성하여 테스트한 것이다




게임 실행시에 마우스로 액터를 클릭하면 Post Process 머티리얼이 적용되도록 한 경우의 블루프린트


Posted by cwisky
Camera/Lerp2017. 10. 27. 16:51

카메라의 이동, 회전시 선형보간(Lerp) 사용 예


블루프린트에서 Lerp노드를 이용하여 카메라의 이동과 회전시에 선형보간(Linear Interpolation)을 사용하는 예이다


프로젝트 준비(공백 프로젝트)

커스텀 GameMode 생성

커스텀 DefaultPawn 생성

커스텀 GameMode에서 [디테일] 뷰/ Classes 패널의 Default Pawn Class 항목에 위에서 생성한 폰 클래스를 설정해준다

커스텀 폰 클래스 블루프린트에 카메라 컴포넌트를 추가한다

커스텀 폰 클래스에서 우측 [디테일] 뷰 / Pawn 패널에서 다음과 같은 부분을 체크해준다

 - Use Controller Rotation Pitch

 - Use Controller Rotation Yaw

언리얼 에디터의 [월드세팅] / Game Mode 패널에서 Game Mode Override 항목에 위에서 작성한 GameMode 클래스를 등록한다


위와 같이 설정하면 언리얼에서 지원하는 키보드, 마우스를 이용한 카메라 네비게이션을 그대로 사용할 수 있고 블루프린트에서도 Pawn의 위치와 회전을 조작할 수 있다.


커스텀 폰 클래스를 더블클릭하여 에디터를 열고 [이벤트 그래프]에 다음과 같이 작성하여 테스트해본다


게임을 실행하고 마우스와 키보드를 조작하여 플레이어 폰(카메라)을 임의의 위치에 놓고 F 키를 누르면 지정된 위치로 선형보간하여 이동함과 동시에 카메라가 플로어의 중심을 향하여 위치하게 된다





Posted by cwisky
Camera/Camera Actor2017. 10. 24. 20:35

마우스를 사용하여 폰(카메라)가 월드의 원점을 중심으로 선회하게 하는 예


GameModeBase를 기반으로 커스텀 GameMode 블루프린트를 생성하고 DefaultPawn 을 기반으로 커스텀 Pawn 블루프린트를 생성한다. 커스텀 GameMode를 더블클릭하여 [디테일] 뷰의 Default Pawn Class 항목에 위에서 생성한 커스텀 Pawn을 설정한다.

생성된 커스텀 Pawn 에디터에서 [디테일]뷰 / Pawn 패널에서 Use Controller Rotation Pitch, Use Controller Rotation Yaw 항목에 체크하면 언리얼에서 지원하는 마우스와 키보드 네비게이션이 모두 지원된다.


월드의 중심에 큐브를 놓고 그 큐브를 컴포넌트로 포함하는 블루프린트 클래스를 작성하고 [이벤트 그래프]에서 아래와 같은 내용을 작성한다




마우스로 큐브를 클릭한 후 마우스를 좌우로 움직이면 마우스의 이동량에 따라서 폰이 큐브의 주위를 회전하면서 시점은 큐브의 중심에 둔다. 다시한번 큐브를 클릭하면 이동을 멈춘다

Posted by cwisky
Camera/Camera Orbit2017. 10. 24. 07:36

월드의 중심에 있는 큐브의 주위를 회전하는 폰(Pawn) 카메라 예제




F키를 누를 때마다 5도씩 월드의 원점(0,0,0) 주위를 선회하며 큐브 중심에 시점을 고정하는 카메라의 예이다.


GameModeBase 를 기반으로 커스텀 GameMode 블루프린트를 생성하고, DefaultPawn을 기반으로 커스텀 Pawn 블루프린트를 생성한 다음, 커스텀 GameMode의 Default Pawn Class 항목에 위에서 생성한 커스텀 폰을 지정하고 레벨 블루프린트에 아래의 내용을 입력하면 테스트할 수 있다.


이렇게 하면 언리얼이 지원하는 키보드, 마우스 네비게이션을 모두 사용할 수 있고, F키를 눌러 월드의 중점에 시점을 고정하고 주위를 선회하는 기능을 작성할 수 있다.


SetActorRotation 노드를 이용하여 폰이 회전하지 않는다면 PlayerController의 SetControlRotation 노드를 사용하면 된다







Posted by cwisky
Billiard/Cue Movement2017. 10. 14. 22:01

당구 큐(Cue)를 만들고 C키를 누르면 플레이어 카메라 앞 아래에 큐가 나타나고 마우스 우측으로 큐를 클릭하여 큐를 선택한 후 마우스를 앞뒤로 움직이면 큐가 공을 향하여 앞뒤로 움직이게 한다. 큐가 놓일 때는 공을 향하게 하고 큐를 선택하여 큐를 앞뒤로 움직이면 큐가 공을 칠 수 있도록 하는 것이 목표이다.


여기서 공은 클래스 블루프린트 없이 그냥 기본 구(Sphere)를 드래그하여 뷰포트에 놓으면 된다


1. BP_Cue 클래스 블루프린트 생성

당구 Cue를 표현한 클래스 블루프린트를 생성한다(Actor 기반)

Static Mesh 를 컴포넌트로 추가하고 Static Mesh를 선택한 후 우측 [디테일]뷰 Static Mesh 항목에서 Shape_Cylinder 를 선택하여 설정한다

뷰포트에서 실린더가 길이방향이 X축과 평행하도록 회전툴을 사용한다

당구공의 크기에 적합한 굵기와 크기로 실린더를 조정한다


2. BP_Cue 이벤트 그래프에 다음과 같은 내용을 작성한다 (마우스로 클릭된 액터가 BP_Cue인지 확인하는 방법을 잘 이해야야 한다)


큐가 놓인 방향을 향하여 앞뒤로 움직이도록 하는 한가지 방법을 적용한다


3. 레벨 블루프린트에는 다음 내용을 작성한다(큐가 공을 향할 수 있도록 큐의 위치와 회전량을 계산하는 방법을 이해해야 한다)


마우스로 액터를 클릭할 때 마우스 커서 아래에 있는 액터를 확인하는 방법

GetPlayerController 함수를 통해 얻은 객체에 포함된 2개의 함수를 이용하면 된다


- GetHitResultUnderCursorByChannel : 액터의 Collision이 Block 으로 설정된 경우 사용 가능

- GetHitResultUnderCursorforObjects : 액터의 Collision이 Overlap으로 설정된 경우 사용 가능


4. 큐와 공의 충돌 후 적절한 충돌반응 구현하기

BP_Cue 액터의 Collision 설정이 Block 으로 된 경우에는 공과 충돌할 경우 그 즉시 언리얼 물리엔진이 적용되어 당구공과 같은 현상을 구현하기 곤란하므로 BP_Cue 액터의 Collision을 Overlap으로 설정한 후에 Overlap 이벤트에서 Add Impulse at Location 노드를 사용하여 실제 당구공과 유사한 물리현상(당구공의 이동과 회전)을 구현할 수 있다. 당구공은 Collision 설정을 Block으로 해야 한다. 


당구공은 Block, 큐는 Overlap으로 설정하면 큐와 공이 충돌했을 때 양쪽 모두에서 Overlap 이벤트가 발생하므로 둘 중 하나를 선택하여 로직을 구현하면 된다. 큐와 공의 충돌시 공측의 반응이 중요하므로 공 클래스에 충돌반응을 구현하면 된다


당구공 클래스와 큐 클래스는 다음과 같이 아주 간단하게 만들어 테스트할 수 있다


아래의 내용은 마우스에 따라 큐를 움직여 공을 치면 큐의 방향과 속도에 따라서 공의 방향과 속도가 결졍되는 내용이다. 

공을 마우스 왼쪽으로 클릭하면 그 지점에 당점이 표시되고 C 키를 누르면 당점을 향하여 큐가 생성되어 보여진다.


큐를 마우스 우측으로 클릭한 후에 마우스를 움직이면 마우스의 상하위치(Y값)에 따라서 큐도 전후로 움직인다. 마우스를 빠르게 앞으로 밀어서 공을 치면 큐가 당점을 치게 되고 공은 큐의 방향과 속도에 따라서 이동하게 되며 큐는 사라진다. 공이 이동할 때는 당점의 위치에 따라서 공이 회전하면서 이동하므로 당구공의 회전에 따른 가시적, 물리적 효과를 낼 수도 있다.


큐(BP_Cue) 클래스 블루프린트 만들기

위의 그림에서 컴포넌트로 추가된 Static Mesh에 우측 [디테일] 뷰의 Static Mesh항목에서 Shape_Cylinder를 선택하고 뷰포트에서 x축 방향으로 실린더를 눕혀놓고 길이와 두께를 조절하면 된다. Static Mesh컴포넌트를 선택했을 때 우측 [디테일]뷰의 Physics 패널과 Collision 패널은 다음과 같이 설정한다

BP_Cue클래스의 Static Mesh 컴포넌트의 속성설정



BP_Ball 클래스 블루프린트 생성

위의 컴포넌트 패널에서 Static Mesh를 선택하고 우측 [디테일] 뷰의 Physics, Collision 패널은 다음과 같이 설정한다

BP_Ball 클래스 블루프린트의 Static Mesh 컴포넌트 속성설정



레벨블루프린트의 내용



BP_Cue 클래스 블루프린트의 내용



BP_Ball 클래스 블루프린트의 내용

Posted by cwisky
Billiard/pixlr.com2017. 10. 13. 20:50

1. 배경을 투명하게 처리할 이미지를 준비한다



2. https://pixlr.com/ 접속하여 [컴퓨터로부터 이미지 열기]를 클릭한다



2. 보기>줌인 기능을 이용하여 이미지를 확대하고 필요한 부부만을 잘라내기 위해 사각 선택툴로 이미지의 필요부분만 선택한다




3. 이미지 > 오려내기 를 사용하여 필요한 부분만 오려낸다


4. 오려내기를 마친 후 보기 > 실제픽셀 을 선택하여 원래 이미지의 크기로 되돌아 간다


5. CTRL+A 를 누르고 이미지 전체를 클립보드에 복사(CTRL+C)한다

6. 파일 > 새 이미지 를 선택하고 아래와 같이 설정한다. 이 설정 결과 클립보드에 저장된 이미지와 동일한 크기의 배경이 투명한 빈 이미지가 생성된다.


7. 격자무늬의 바탕에서 CTRL+V를 누르면 새로운 레이어가 생성되면서 클립보드에 저장된 이미지가 붙여넣기 된다


8. 요술지팡이 선택툴을 사용하여 이미지의 빈 부분(흰색부분)을 선택하고 DELETE 키를 누르면 색상이 제거된다



9. 레이어 > 보이는 레이어 병합을 선택하여 모든 레이어를 병합한다


10. 파일 > 저장 을 선택하고 PNG 형식을 선택하여 [확인] 버튼을 누른다

Posted by cwisky
Billiard/Decal2017. 10. 1. 08:11

언리얼 엔진에서 지원하는 Decal을 블루프린트를 이용하여 원하는 Actor 위에 보여주는 방법


https://answers.unrealengine.com/questions/2184/how-to-make-a-decal-and-spawn-it.html


To spawn the decal you can use either "Spawn Decal At Location" (for non-moving objects like wall) or "Spawn Decal Attached" (for moving objects like a vehicle). 


당구공의 표면에 적색의 점을 표현하는 Decal을 생성하고 블루프린트에서 사용하는 예


CB에서 마우스 우측 > 머티리얼 > M_Decal_Red_Dot 등의 이름을 지정한다

더블클릭하여 머티리얼 에디터를 열고 왼쪽 아래의 [디테일] 뷰 / Material/Material Domain : Defered Decal 선택


사용할 텍스쳐가 알파채널을 가진 PNG 파일이라면 Blend Mode : Translucent 으로 설정한다


텍스쳐로 사용할 이미지를 CB에서 드래그하여 머티리얼 그래프에 놓고 RGB 핀을 [베이스 컬러] 핀에 연결한다




BP_Ball 클래스의 [이벤트 그래프]에서 다음과 같이 로직을 구성하고 게임을 실행하여 G 키를 누르면 플레이어 카메라가 바라보는 공의 정면에 위에서 준비한 Decal이 나타난다



마우스로 클릭된 액터의 표면에 데칼을 출력하는 예


ConvertMouseLocationToWorldSpace 노드는 마우스 커서의 2차원 좌표를 3차원 공간의 위치로 변환해준다. 그러나 그 위치는 마우스가 올려진 특정 액터의 표면 위치가 아닌 현재 영상이 보여지는 카메라의 표면의 위치에 해당하므로 마우스 커서 아래의 액터의 표면의 월드좌표를 구하려면 ConvertMouseLocationToWorldSpace 노드의 WorldLocation 핀과 WorldDirection을 사용하여 LineTraceByChannel 을 이용하여 라인이 충돌한 위치를 얻으면 된다

쉽게 표현하자면 ConvertMouseLocationToWorldSpace노드를 통해 얻은 마우스 커서의 월드좌표는 그 어떤 액터의 좌표를 의미하지 않고 모든 액터로부터 이격된 곳에 있는 카메라 렌즈상의 마우스 위치가 월드좌료로 리턴된다. 


당구공을 마우스로 클릭하여 당점을 설정할 때 클릭된 당구공의 표면 월드좌료를 저장했다가 당구공에 충격을 가할 때 그 위치에 가하면(Add Impluse At Location) 당구공이 이동하면서 회전하는 효과를 낼 수 있다.


위의 그림에서 LineTraceByChannel 노드의 Ignore Self 항목에 체크를 해제해야 공 자신에게도 라인이 그려진다.


Decal을 그릴 때 적절히 회전하여 그리는 방법

Decal이 그려지는 위치는 LineTraceByChannel 을 통해 구할 수 있고 Decal이 그려질 때 액터 상의 그려지는 방향에 따라서 Decal도 적절히 회전하여 그려줘야 Decal의 정면이 보여진다. 


간단한 벡터의 연산을 통해 Decal의 회전량을 구하는 방법은 아래의 내용을 참고하면 된다. 레벨 블루프린트를 이용한 경우이다


Posted by cwisky

애니메이션 블루프린트를 사용하면 State Machine을 활용하여 상태에 따른 애니메이션을 실행할 수 있고 각 상태 간의 전환 규칙도 간편하게 작성 및 관리할 수가 있다. Play Animation 노드를 사용할 때 보다 자연스러운 애니메이션이 가능하고 로직으로부터 애니메이션 관리기능을 분리할 수 있는 장점을 갖는다


애니메이션 블루프린트를 생성하고 사용하는 절차는 다음과 같다

Animation Blueprint 생성

Animation Blueprint를 생성하고 State Machine을 사용하여 상태에 따른 애니메이션을 지정하고 상태간의 전환규칙(Transition Rules)을 정의한다


캐릭터 클래스 생성 ( Character를 상속한 클래스 블루프린트 생성 )

Character 클래스를 상속하여 클래스 블루프린트를 생성하고 컴포넌트 패널의 Mesh 컴포넌트로 애니메이션이 속한 스켈레탈 메시(Skeletal Mesh)를 선택한다


캐릭터 클래스에 애니메이션 블루프린트 적용

캐릭터 클래스의 Mesh 컴포넌트를 선택하고 우측 [디테일] 뷰 / Animation / Animation Mode : Use Animation Blueprint 선택


캐릭터 클래스를 CB에서 뷰포트로 드래그하고 실행


1. Animation Blueprint 생성

CB에서 마우스 우측 > 애니메이션 > 애니메이션 블루프린트 > 설정창이 뜬다

부모 클래스 : AnimInstance

타겟 스켈레톤 : 애니메이션이 속한 스켈레톤을 선택


애님그래프 탭을 누르고 그래프 바탕에서 마우스 우측을 눌러 [스테이트머신 추가]를 선택하여 스테이트 머신을 생성하고 디폴트로 생성된 [Result] 노드와 연결해준다


생성된 스테이트 머신을 더블클릭하고 [Entry] 노드에서 드래그하여 놓고 새로운 상태를 생성하고 각 상태를 더블클릭하여 실행할 애니메이션을 우측 [Browse Assets] 패널에서 드래그하여 지정한다. 혹은 애니메이션을 드래그하여 상태 노드위에 놓으면 자동으로 애니메이션이 연결된다




애니메이션 노드를 선택하고 우측 [디테일]뷰에서 Loop Animation 항목에 체크 여부를 고려한다




상태 간의 전환규칙(Transition Rules)을 정의한다

상태 간의 전환규칙은 캐릭터의 상태에 따르는 경우가 대부분이므로 캐릭터의 참조를 구하고 캐릭터 클래스의 상태관련 변수의 값을 참조하여 애니메이션 상태 전환의 기준으로 사용하면 된다




이벤트 그래프 탭을 누르고 캐릭터의 참조를 구하고 캐릭터 클래스의 상태 변수 값을 애니메이션 블루프린트 클래스의 변수 값에 할당한다. 이 값은 각 상태의 전환규칙을 정의할 때 사용될 수 있다


주의 : Animation Blueprint 에서는 Get AI Controller 노드가 제대로 작동하지 않으므로 콘트롤러를 구하려면 Try Get Pawn Owner -> Get Controller 방법을 사용해야 한다

아래의 예에서는 Try Get Pawn Owner 노드를 사용하여 애니메이션이 적용되는 Pawn 의 참조를 구하고 있다




2. 캐릭터 클래스 생성

애니메이션이 속한 스켈레톤을 메시 컴포넌트로 포함하는 클래스 블루프린트를 생성한다. 이 때 부모 클래스를 Character으로 지정한다

스켈레톤에 소켓을 추가하면 스켈레탈 메시를 포함하는 클래스 블루프린트에서 소켓에 무기 등을 연결해 줄 수 있다.

[디테일] 뷰 / Mesh / Skeletal Mesh : 애니메이션이 속한 스켈레탈 메시 지정

[디테일] 뷰 / Animation / Animation Mode : Use Animation Blueprint 선택

Anim Class : 위에서 작성된 애니메이션 블루프린트 이름을 선택


혹은 캐릭터 클래스를 새로 생성하지 않고 ThirdPersonCharacter 캐릭터를 복제하여 [디테일]뷰/Animation/Animation Mode : Use Animation Blueprint, 와 Anim Class : 애니메이션 블루프린트 이름을 선택하면 된다


커스텀 캐릭터가 사용되기 위해서는 언리얼 레벨 에디터의 [디테일]뷰/GameMode/Default Pawn Class에 등록해야 한다


이렇게 설정하면 현재 캐릭터 클래스에서는 지정한 애니메이션 블루프린트가 사용된다




캐릭터 클래스의 [이벤트 그래프]에는 다음과 같이 애니메이션 블루프린트와 통신하기 위한 상태변수(CurrState)가 선언되어 캐릭터의 상태를 애니메이션 블루프린트에 전달하는 역할을 하게 된다. 여기서는 캐릭터의 CurrState 변수의 값을 애니메이션 블루프린트의 [이벤트 그래프] 탭에 작성된 내용에서 참조하고 있다 그러므로 캐릭터 클래스에서는 애니메이션을 직접 호출하거나 실행하는 것이 아니라 상태변수의 값만 변경해주면 현재 캐릭터에 등록된 애니메이션 블루프린트에서 자동으로 상태 값을 확인하여 상태에 연결된 애니메이션이 실행되는 구조이다



AI 캐릭터가 총에 맞았을 때 쓰러지는 애니메이션을 실행하는 경우


AI 캐릭터가 총소리를 들었을 때 그 방향으로 돌아서는 경우


위에서 사용된 TimeLine 노드의 그래프




3. 캐릭터 클래스를 CB로부터 뷰포트에 드래그하 놓고 게임을 실행하여 상태전한에 따른 각 애니메이션이 적절히 실행되는지 확인한다




Posted by cwisky

언리얼 엔진에서 Pawn Noise Emitter 컴포넌트의 Make Noise 노드를 사용하면 AI 캐릭터가 Pawn Sensing 컴포넌트의 On Hear Noise 이벤트를 이용하여 반응하게 할 수 있다


노이즈 생성 ( 일인칭 캐릭터의 블루프린트 )



위의 Loudness 값은 0.0 ~ 1.0 사이의 값으로 AI Pawn Sensing 컴포넌트의 HearingThreshold.속성으로 설정된 영역에 직접적으로 영향을 미친다. 즉 Loudness를 1.0으로 한다면 On Hear Noise 이벤트에 전달되는 Volumn 값도 1.0이라는 의미이다. 단, AI의 HearingThreshold로 지정한 영역 내에만 적용된다


노이즈 청취 ( AI 캐릭터의 블루프린트 )



AI 캐릭터가 소리가 나는 방향으로 자세를 회전하는 예


Posted by cwisky