1 00:00:04.280 --> 00:00:08.893 실감 공통편 폭발 이펙트 2 00:00:08.893 --> 00:00:11.646 GCC 사관학교 3 00:00:23.571 --> 00:00:25.959 안녕하세요 박현상 입니다 4 00:00:25.959 --> 00:00:28.760 이번 강의부터는 나이아가라를 이용한 5 00:00:28.760 --> 00:00:31.719 언리얼 이펙트를 다루게 됩니다 6 00:00:31.719 --> 00:00:34.369 나이아가라의 다양한 모듈과 7 00:00:34.369 --> 00:00:37.000 다른 에셋들과의 연계를 이용하여 8 00:00:37.000 --> 00:00:39.599 다소 정적이었던 셰이더와는 다르게 9 00:00:39.599 --> 00:00:43.320 다이나믹한 효과들을 만들게 됩니다 10 00:00:43.320 --> 00:00:45.470 나이아가라의 버스트와 11 00:00:45.470 --> 00:00:48.759 셰이더의 월드 오프셋과 같은 기능들을 활용해서 12 00:00:48.759 --> 00:00:51.160 폭발 이펙트를 만들어 볼 겁니다 13 00:00:51.160 --> 00:00:55.279 특히 메시 파티클이라고 하는 것을 사용해서 14 00:00:55.279 --> 00:00:58.360 스프라이트의 이미지가 아니라 15 00:00:58.360 --> 00:01:01.560 메시를 구체나 큐브와 같은 16 00:01:01.560 --> 00:01:06.239 메시 파티클 입자로서 사용하게 될 것입니다 17 00:01:06.239 --> 00:01:09.239 폭발 이펙트는 순간적인 힘을 이용해서 18 00:01:09.239 --> 00:01:13.639 강한 인상을 남길 수 있는 효과 중에 하나인데요 19 00:01:13.639 --> 00:01:16.589 우리가 일상생활에서 흔히 보는 20 00:01:16.589 --> 00:01:19.519 불꽃놀이와 같은 폭발에서부터 21 00:01:19.519 --> 00:01:21.469 함께 묘사되는 다양한 22 00:01:21.469 --> 00:01:24.113 나이아가라의 모듈들을 활용해 보겠습니다 23 00:01:24.562 --> 00:01:28.222 폭발 반경 세팅 및 폭발 효과 연출 24 00:01:29.367 --> 00:01:32.917 폭발 이펙트 제작을 위한 에셋부터 25 00:01:32.917 --> 00:01:35.879 차근차근 진행해 보겠습니다 26 00:01:35.879 --> 00:01:40.800 우선은 ExplosionFX라는 폴더를 하나 만들어 뒀구요 27 00:01:40.800 --> 00:01:43.440 나이아가라를 만들어 줍니다 28 00:01:43.440 --> 00:01:46.279 그리고 여기에 사용할 가장 기본이 되는 것은 29 00:01:46.279 --> 00:01:49.559 SingleLoopingParticle이라고 있습니다 30 00:01:49.559 --> 00:01:52.609 이것을 기본 템플릿으로 해서 31 00:01:52.609 --> 00:01:55.519 Create 버튼을 눌러 주겠습니다 32 00:01:55.519 --> 00:02:00.669 에셋의 이름은 FX_Explosion이라고 33 00:02:00.669 --> 00:02:03.120 이렇게 간단하게 지어주고요 34 00:02:03.120 --> 00:02:07.680 더블 클릭해서 나이아가라 창을 오픈하도록 하겠습니다 35 00:02:07.680 --> 00:02:10.039 나이아가라 창을 보면 프리뷰 화면에서 36 00:02:10.039 --> 00:02:16.160 지금 원형에 이런 식으로 작은 구체가 하나 있습니다 37 00:02:16.160 --> 00:02:19.919 우선 폭발 이펙트를 다루는데 대략적인 개요를 말씀드리면 38 00:02:19.919 --> 00:02:24.039 이 원형은 폭발의 전체적인 범위를 그려줄 수 있는 39 00:02:24.039 --> 00:02:27.989 이렇게 확장될 수 있게 크기가 늘어나는 40 00:02:27.989 --> 00:02:31.600 구체 모양으로 사용할 겁니다 41 00:02:31.600 --> 00:02:34.880 여기에서 하나 여러분들이 알아 두셔야 될 게 있는데 42 00:02:34.880 --> 00:02:38.160 기본적으로 이 파티클에는 스프라이트라고 하는 43 00:02:38.160 --> 00:02:40.860 카메라를 항상 정면으로 바라보는 44 00:02:40.860 --> 00:02:43.279 사각형의 메시를 이용해서 45 00:02:43.279 --> 00:02:46.839 이 기본 세팅이 되어 있습니다 46 00:02:46.839 --> 00:02:50.679 근데 이게 구체 범위를 나타내려고 하면 47 00:02:50.679 --> 00:02:53.399 일반적인 이런 사각형의 메시가 아니고 48 00:02:53.399 --> 00:02:56.559 스피어를 직접 가져다 써야겠죠 49 00:02:56.559 --> 00:02:59.209 그래서 실제 부피를 가지고 있는 50 00:02:59.209 --> 00:03:02.320 3D 메시를 사용을 해야 되는데 51 00:03:02.320 --> 00:03:06.039 3D 메시를 사용하기 위해서는 여러분들이 여기 보이는 52 00:03:06.039 --> 00:03:10.800 Renderer 항목에 Sprite가 아니고 + 버튼을 눌러서 53 00:03:10.800 --> 00:03:13.800 Mesh Renderer를 추가해 주고 54 00:03:13.800 --> 00:03:16.000 Sprite는 끄도록 하겠습니다 55 00:03:16.000 --> 00:03:19.199 그럼 화면에서 동그란 구체가 사라졌죠 56 00:03:19.199 --> 00:03:23.149 이 Mesh Renderer의 Meshes 항목에서 57 00:03:23.149 --> 00:03:26.399 지금 화살표 기즈모 모양으로 되어 있어서 58 00:03:26.399 --> 00:03:29.210 실제 뷰포트를 확인해 보면 이렇게 59 00:03:29.210 --> 00:03:33.039 작은 기즈모가 떠 있는 것을 확인하실 수가 있는데 60 00:03:33.039 --> 00:03:37.320 이것을 sphere라고 검색했을 때 61 00:03:37.320 --> 00:03:40.420 나오는 여러가지 스피어들 중에 62 00:03:40.420 --> 00:03:43.880 가장 기본이 되는 Static Mesh Sphere 63 00:03:43.880 --> 00:03:46.360 이렇게 스피어 항목들 중에서도 64 00:03:46.360 --> 00:03:50.710 이 Sky 아래쪽에 보면은 기본 Static 65 00:03:50.710 --> 00:03:52.880 이것을 넣어줍니다 66 00:03:52.880 --> 00:03:54.830 여러분들이 이걸 67 00:03:54.830 --> 00:03:57.399 스태틱 메시와 관련되어 있는 에셋을 사용하실 때 68 00:03:57.399 --> 00:04:02.360 이걸 더블 클릭해서 간단한 조건을 좀 알아볼 건데요 69 00:04:02.360 --> 00:04:07.360 간혹 이렇게 스피어들 중에 UV가 안 펴져 있거나 70 00:04:07.360 --> 00:04:10.860 혹은 피봇이 아래쪽에 잡혀 있는 경우에는 71 00:04:10.860 --> 00:04:12.199 사용하시면 안 되고 72 00:04:12.199 --> 00:04:15.800 이 오브젝트 피봇이 중앙에 위치할 수 있게끔 73 00:04:15.800 --> 00:04:18.880 실제로 뷰포트에서 이렇게 움직여 보면 74 00:04:18.880 --> 00:04:22.000 F키를 눌러서 움직여 보면 75 00:04:22.000 --> 00:04:26.720 이렇게 그리드가 구의 중앙을 향해서 이렇게 연결되어 있죠 76 00:04:26.720 --> 00:04:32.279 그래서 피봇점이 구의 중앙에 잡혀 있다는 의미입니다 77 00:04:32.279 --> 00:04:33.729 그렇기 때문에 여러분들이 78 00:04:33.729 --> 00:04:36.959 이런 스피어 메시를 고른다고 하시면 79 00:04:36.959 --> 00:04:39.509 지금 제가 설명드린 이러한 조건을 갖춘 80 00:04:39.509 --> 00:04:42.239 그리드가 구체의 중앙을 81 00:04:42.239 --> 00:04:45.600 이렇게 측면에서 봐도 중앙을 향하고 있죠 82 00:04:45.600 --> 00:04:50.000 그리고 지금 보는 것처럼 이렇게 UV가 펴져서 83 00:04:50.000 --> 00:04:52.949 체크무늬가 온전히 보이는 형태의 84 00:04:52.949 --> 00:04:56.200 스피어를 사용하시는 것이 좋습니다 85 00:04:56.200 --> 00:05:00.160 지금 상태에서는 이 Initialize Particle에서 보면 86 00:05:00.160 --> 00:05:03.660 Sprite Mode만 Uniform으로 세팅이 되어 있고 87 00:05:03.660 --> 00:05:07.720 Mesh Attribute라는 항목은 Unset으로 되어 있기 때문에 88 00:05:07.720 --> 00:05:10.359 우리 눈에 보이지 않는 거죠 89 00:05:10.359 --> 00:05:13.309 그래서 스프라이트 렌더러는 사용하지 않으니까 90 00:05:13.309 --> 00:05:15.359 리셋을 해주시고 91 00:05:15.359 --> 00:05:20.000 Mesh Scale Mode를 Uniform으로 바꿔 주겠습니다 92 00:05:20.000 --> 00:05:25.799 그리고 Lifetime을 CurrentLoopDuration으로 되어 있던 걸 93 00:05:25.799 --> 00:05:30.160 리셋을 해서 1로 맞춰 주고요 94 00:05:30.160 --> 00:05:32.839 그러면 이제 컴파일이 끝나고 나면 95 00:05:32.839 --> 00:05:37.440 이런 식으로 구체가 우리 눈에 보이게 될 겁니다 96 00:05:37.440 --> 00:05:42.160 Emitter의 State 항목도 Life Cycle Mode를 Self로 해서 97 00:05:42.160 --> 00:05:44.519 우리가 만들려는 건 폭발 이펙트죠 98 00:05:44.519 --> 00:05:48.079 불이나 연기처럼 항상 일어나는 이펙트가 아닙니다 99 00:05:48.079 --> 00:05:52.640 그래서 Self로 바꾸고 여기를 Once 이렇게 100 00:05:52.640 --> 00:05:56.799 기본값 1초 동안 공장이 작동되게끔 101 00:05:56.799 --> 00:05:59.440 이렇게 세팅을 바꿔 놓겠습니다 102 00:05:59.440 --> 00:06:04.600 이제 여기에 있는 구체가 확장이 돼서 커질 수 있게끔 103 00:06:04.600 --> 00:06:11.359 Particle Update에서 Mesh Size라고 하는 항목을 검색해 보시면 104 00:06:11.359 --> 00:06:13.880 Scale Mesh Size가 있죠 105 00:06:13.880 --> 00:06:16.959 이것을 이렇게 연결을 해주고요 106 00:06:16.959 --> 00:06:20.279 Scale Factor 부분을 잠깐 열어서 보겠습니다 107 00:06:20.279 --> 00:06:24.040 그러면 기본 메시 스케일이 Scale Factor를 이용해서 108 00:06:24.040 --> 00:06:28.359 나중에 우리가 X축으로만 길게 한다든가 109 00:06:28.359 --> 00:06:32.920 Y축으로만 길게 한다든가 이런 식으로 변형이 가능합니다 110 00:06:32.920 --> 00:06:38.200 이것을 시간이 지남에 따라서 커질 수 있게 111 00:06:38.200 --> 00:06:41.880 Vector From Curve를 이용해서 만들어주고요 112 00:06:41.880 --> 00:06:44.839 폭발이니까 작은 점에서 시작했다가 113 00:06:44.839 --> 00:06:46.519 서서히 커지겠죠 114 00:06:46.519 --> 00:06:49.720 그래프의 형태를 뒤집어 줘야 되는데 115 00:06:49.720 --> 00:06:54.040 이렇게 0일 때, 시작일 때 Scale 1에서 116 00:06:54.040 --> 00:06:58.399 Lifetime이 100%일 때 Scale이 0이 되게끔 되어 있는데 117 00:06:58.399 --> 00:07:03.000 이 Vector3로 이루어져 있다 보니까 118 00:07:03.000 --> 00:07:05.959 템플릿을 사용해도 제대로 적용이 안 될 때가 있습니다 119 00:07:05.959 --> 00:07:07.799 그럴 때는 이렇게 드래그 해서 120 00:07:07.799 --> 00:07:12.600 X, Y, Z를 모두 다 선택한 다음에 시작할 때는 0 121 00:07:12.600 --> 00:07:16.559 그리고 끝에 100%일 때 122 00:07:16.559 --> 00:07:20.299 이때는 Scale 1이 되게끔 설정을 해 놓습니다 123 00:07:20.299 --> 00:07:22.320 그리고 나서 다시 플레이를 해 보면 124 00:07:22.320 --> 00:07:25.480 이런 식으로 크기가 바뀌죠 125 00:07:25.480 --> 00:07:29.279 여기서 작업자마다 성향이 나눠지는데요 126 00:07:29.279 --> 00:07:33.920 여기에서 직접적으로 8배가 커져라 127 00:07:33.920 --> 00:07:36.079 내지는 10배가 커져라 128 00:07:36.079 --> 00:07:39.640 이런 식으로 정해 줄 수 있는 방법도 있고 129 00:07:39.640 --> 00:07:42.590 Curve 자체는 0에서 1 사이 값으로 130 00:07:42.590 --> 00:07:44.440 이렇게 만들어 둔 다음에 131 00:07:44.440 --> 00:07:46.559 Scale Curve라는 값을 이용해서 132 00:07:46.559 --> 00:07:49.720 내가 몇 퍼센트를 키우고 싶은지 133 00:07:49.720 --> 00:07:52.119 이를테면 10배를 키울 거면 134 00:07:52.119 --> 00:07:54.399 이런 식으로 입력한다든가 135 00:07:54.399 --> 00:07:58.880 혹은 여기에 들어가는 값을 Vector가 아닌 136 00:07:58.880 --> 00:08:01.239 Vector from Plot을 이용해서 137 00:08:01.239 --> 00:08:05.160 모두 다 X, Y, Z가 모두 다 일정한 값이 되게 138 00:08:05.160 --> 00:08:10.040 이렇게 Value 값을 입력한다든지 하는 방법으로 139 00:08:10.040 --> 00:08:12.070 값을 제외해 주게 됩니다 140 00:08:12.070 --> 00:08:16.720 그래서 여러분들은 둘 중에 하나만 선택하셔도 됩니다 141 00:08:16.720 --> 00:08:19.480 그래프를 통해서 모든 것들을 제외하시거나 142 00:08:19.480 --> 00:08:22.920 혹은 그래프는 0에서 1 사이에 두고 143 00:08:22.920 --> 00:08:25.880 여기 있는 Scale Curve라는 값을 이용해서 144 00:08:25.880 --> 00:08:29.519 Curve에 들어가는 최대값 같은 것들을 145 00:08:29.519 --> 00:08:32.239 별도로 지정을 하는 방법 146 00:08:32.239 --> 00:08:35.479 이렇게 크기를 지정해 놓으시면 되는 거죠 147 00:08:35.479 --> 00:08:36.919 이것을 저장을 하고 148 00:08:36.919 --> 00:08:39.359 월드에 한번 배치해 놓겠습니다 149 00:08:39.359 --> 00:08:43.679 현재 저는 10배가 커지라고 되어 있기 때문에 150 00:08:43.679 --> 00:08:48.440 이 Mesh Renderer에 연결되어 있는 현재 스피어의 크기 151 00:08:48.440 --> 00:08:50.760 여기에서 보시면 152 00:08:50.760 --> 00:08:53.710 Approx Size가 100×100×100 153 00:08:53.710 --> 00:08:54.960 100 유닛으로 되어 있죠 154 00:08:54.960 --> 00:08:57.679 1m 짜리 스피어가 10배가 되니까 155 00:08:57.679 --> 00:09:00.559 10m 까지 커지게 되는 겁니다 156 00:09:00.559 --> 00:09:04.719 이것을 월드에다가 한번 배치해 놓도록 하겠습니다 157 00:09:04.719 --> 00:09:07.679 그러면 프리뷰와는 다르게 158 00:09:07.679 --> 00:09:09.960 커지는 모양새가 깔끔하죠 159 00:09:09.960 --> 00:09:11.960 그래서 다시 한번 Reset을 눌러보시면 160 00:09:11.960 --> 00:09:14.599 이렇게 부웅 하고 커지는 161 00:09:14.599 --> 00:09:17.880 이렇게 효과를 하나 만들어 봤구요 162 00:09:17.880 --> 00:09:20.760 Scale Mesh를 할 때 커지는 속도를 163 00:09:20.760 --> 00:09:23.880 여러분들이 여기에 있는 Curve를 이용해서 164 00:09:23.880 --> 00:09:27.840 이렇게 부드럽게 Auto로 세팅을 해 두시고 165 00:09:27.840 --> 00:09:30.840 여기 있는 Curve를 이용해서 166 00:09:30.840 --> 00:09:35.359 이런 식으로 속도의 변화도 만들어 줄 수가 있습니다 167 00:09:35.359 --> 00:09:39.599 우선 저장하고 월드에서 다시 확인해 보겠습니다 168 00:09:39.599 --> 00:09:41.799 Reset을 하면 이런 식으로 169 00:09:41.799 --> 00:09:44.000 처음에는 빨리 커지다가 170 00:09:44.000 --> 00:09:48.799 서서히 느려지게끔 지금은 세팅이 되어 있는 상태입니다 171 00:09:48.799 --> 00:09:51.200 이런 식으로 이제 폭발이 일어나면 172 00:09:51.200 --> 00:09:54.280 그 폭발되는 반경을 그려 준 건데요 173 00:09:54.280 --> 00:09:59.559 여기에다가 Material을 하나 적절한 걸 넣어 줘야겠죠 174 00:09:59.559 --> 00:10:02.520 우선 Material 창을 열어서 175 00:10:02.520 --> 00:10:07.919 M_ExplosionFX라고 만들어 줍니다 176 00:10:07.919 --> 00:10:11.640 그리고 나서 에디터 창을 열어 주고요 177 00:10:11.640 --> 00:10:14.799 여기에서 Material을 반투명한 효과 178 00:10:14.799 --> 00:10:16.599 서서히 사라질 수 있게 179 00:10:16.599 --> 00:10:20.520 폭발이라고 하는 게 점점 사그라들게 되죠 180 00:10:20.520 --> 00:10:23.840 그래서 서서히 사라질 수 있게 Translucent로 181 00:10:23.840 --> 00:10:26.880 그리고 폭발 자체는 빛을 내니까 182 00:10:26.880 --> 00:10:29.980 Unlit 상태로 이렇게 두겠습니다 183 00:10:29.980 --> 00:10:35.159 여기에다가 간단하게 이 화염과 같은 느낌을 내기 위해서 184 00:10:35.159 --> 00:10:37.640 쉐이딩 작업을 해 줄 건데요 185 00:10:37.640 --> 00:10:41.159 우선 VectorParameter를 이용해서 186 00:10:41.159 --> 00:10:45.840 하나는 FireColor라고 지정을 해 주고요 187 00:10:45.840 --> 00:10:48.159 여기에 들어가는 Default 값은 188 00:10:48.159 --> 00:10:52.840 Red는 8, Green 1, Blue 0.2로 이렇게 두겠습니다 189 00:10:52.840 --> 00:10:56.200 그래서 이것을 Emissive Color에 연결해서 보면 190 00:10:56.200 --> 00:10:59.960 미리 보기에서는 지금 보시는 것처럼 노란색으로 보이는데 191 00:10:59.960 --> 00:11:01.840 실제로 연결을 해서 보면 192 00:11:01.840 --> 00:11:05.080 주황빛에 가까운 형태를 띄고 있습니다 193 00:11:05.080 --> 00:11:08.960 그리고 화염이니까 빨갛게 타는 부분과 194 00:11:08.960 --> 00:11:12.559 까맣게 잿더미처럼 숯처럼 보이는 부분이 있겠죠 195 00:11:12.559 --> 00:11:15.359 그러면 그것을 만들어 주기 위해서 196 00:11:15.359 --> 00:11:19.400 숯처럼 보이는 부분은 굳이 색깔을 정할 필요는 없으니까 197 00:11:19.400 --> 00:11:22.320 Constant3Vector를 이용해서 198 00:11:22.320 --> 00:11:25.260 블랙 그대로 이렇게 둘 겁니다 199 00:11:25.260 --> 00:11:28.799 물론 경우에 따라서는 우리가 나중에 이것을 200 00:11:28.799 --> 00:11:32.880 Lerp를 이용해서 LinearInterpolate라는 기능을 이용해서 201 00:11:32.880 --> 00:11:37.799 엮어 줄 건데 여기에다가 숫자를 직접 넣어주는 대신 202 00:11:37.799 --> 00:11:40.280 여기에다 노드를 넣어주는 대신 203 00:11:40.280 --> 00:11:42.119 0이라고 입력해도 됩니다 204 00:11:42.119 --> 00:11:45.119 똑같은데 단지 저는 강의를 위해서 205 00:11:45.119 --> 00:11:48.520 여러분들에게 어떠한 색깔이 섞이고 있는지를 206 00:11:48.520 --> 00:11:50.320 설명해 드리기 위해서 207 00:11:50.320 --> 00:11:54.640 이렇게 일부러 노드를 이용해서 연결을 할 겁니다 208 00:11:54.640 --> 00:11:58.239 이것을 그대로 Emissive에 연결을 할 겁니다 209 00:11:58.239 --> 00:12:03.599 그래서 Alpha 값이 0일 때는 FireColor가 나오고요 210 00:12:03.599 --> 00:12:07.719 Alpha 값이 1일 때는 블랙 컬러가 나오게끔 211 00:12:07.719 --> 00:12:10.280 이렇게 세팅을 했습니다 212 00:12:10.280 --> 00:12:11.919 이것은 이제 그대로 두고요 213 00:12:11.919 --> 00:12:17.159 이제 보는 방향에 따라서 이것을 섞어 줘야 될 텐데 214 00:12:17.159 --> 00:12:19.000 우선은 가장 기본이 되는 215 00:12:19.000 --> 00:12:21.760 Fresnel이라고 하는 노드를 이용해서 216 00:12:21.760 --> 00:12:24.960 Lerp에다가 우선 연결을 해 보겠습니다 217 00:12:24.960 --> 00:12:28.000 Lerp의 Alpha에다가 Fresnel을 연결을 하면 218 00:12:28.000 --> 00:12:31.080 빛이 비추는 것 같기는 한데 219 00:12:31.080 --> 00:12:33.479 이전과는 조금 달라졌죠 220 00:12:33.479 --> 00:12:35.400 한번 FireColor만 연결했을 때랑 221 00:12:35.400 --> 00:12:37.159 차이를 한번 느껴 보세요 222 00:12:37.159 --> 00:12:41.520 FireColor를 연결하면 구체의 가장자리 부분이 223 00:12:41.520 --> 00:12:45.479 지금처럼 단 색깔로 나오는 걸 확인하실 수가 있는데 224 00:12:45.479 --> 00:12:48.440 Lerp를 이용해서 연결을 해 주게 되면 225 00:12:48.440 --> 00:12:50.590 가장자리 약하게 226 00:12:50.590 --> 00:12:53.400 그라데이션이 생긴 것을 확인하실 수가 있죠 227 00:12:53.400 --> 00:12:56.450 이제는 이것을 조금 더 228 00:12:56.450 --> 00:12:59.559 그럴듯한 모양으로 바꿔 줄 건데요 229 00:12:59.559 --> 00:13:03.760 우선은 Noise 텍스처를 하나 가지고 올 겁니다 230 00:13:03.760 --> 00:13:07.080 Texture Sample 노드를 이용해서 231 00:13:07.080 --> 00:13:10.840 텍스처 항목에서 Noise 검색을 해 보시면 232 00:13:10.840 --> 00:13:13.520 Perlin_Noise라고 이렇게 있습니다 233 00:13:13.520 --> 00:13:18.359 이것을 ExponentIn 값에다가 한번 연결해 보겠습니다 234 00:13:18.359 --> 00:13:22.239 이렇게 연결을 하면 마치 태양에 흑점이 생긴 것처럼 235 00:13:22.239 --> 00:13:25.460 부분적으로는 까맣고 부분적으로는 밝은 236 00:13:25.460 --> 00:13:28.840 이미지를 얻는 걸 확인하실 수가 있는데 237 00:13:28.840 --> 00:13:31.840 여기에서 자세히 보시면 구체를 돌려보면 238 00:13:31.840 --> 00:13:36.080 지금 보시는 것처럼 화면의 가운데 영역 239 00:13:36.080 --> 00:13:38.799 구체의 가운데 영역이 밝고 240 00:13:38.799 --> 00:13:40.960 어느 방향으로 보더라도 241 00:13:40.960 --> 00:13:45.299 지금 보시는 것처럼 이렇게 가운데가 밝죠 242 00:13:45.299 --> 00:13:49.840 그리고 가장자리는 불그스름한 걸 확인하실 수가 있죠 243 00:13:49.840 --> 00:13:53.320 만약에 여기에 들어가는 Noise 값이 244 00:13:53.320 --> 00:13:56.719 Multiply를 이용해서 기존에 있던 값보다 245 00:13:56.719 --> 00:13:59.669 뭐 이를테면 3배 더 강하게 246 00:13:59.669 --> 00:14:02.479 ExponentIn에 들어간다고 하면 247 00:14:02.479 --> 00:14:06.200 지금 보시는 것처럼 검은색 영역이 조금 더 줄어들고요 248 00:14:06.200 --> 00:14:08.600 Multiply로 0.5 정도로 249 00:14:08.600 --> 00:14:11.479 기존의 절반만큼 들어가게 되면 250 00:14:11.479 --> 00:14:14.179 검은색 영역이 조금 더 눈에 251 00:14:14.179 --> 00:14:16.080 도드라지는 걸 확인하실 수가 있죠 252 00:14:16.080 --> 00:14:19.479 0에 가까워질수록 검은색이 되는 겁니다 253 00:14:19.479 --> 00:14:21.829 0 보다 커질수록 FireColor가 254 00:14:21.829 --> 00:14:24.280 점점 눈에 보이게 되는 것이죠 255 00:14:24.280 --> 00:14:27.280 나중에 이건 파라미터로 빼 줄 거고요 256 00:14:27.280 --> 00:14:31.179 여기에서 단순히 멈춰 있으면 257 00:14:31.179 --> 00:14:34.479 이 자체가 굉장히 정적으로 보이니까 258 00:14:34.479 --> 00:14:39.119 Panner라고 하는 UV를 이동시키는 노드를 이용해서 259 00:14:39.119 --> 00:14:42.000 Texture Sample의 UVs에 연결을 해 줄 겁니다 260 00:14:42.000 --> 00:14:44.840 이렇게 연결을 해 줬고요 261 00:14:44.840 --> 00:14:46.940 여기에서 보면 Speed 값이 모두 다 262 00:14:46.940 --> 00:14:48.159 0, 0으로 되어 있는데 263 00:14:48.159 --> 00:14:52.919 이걸 1로 해 보면 지금 보시는 것처럼 264 00:14:52.919 --> 00:14:57.605 이렇게 마치 화염이 소용돌이 치듯이 265 00:14:57.605 --> 00:14:59.655 빙글빙글 돌아가는 듯한 느낌으로 266 00:14:59.655 --> 00:15:02.071 표현이 되는 것을 확인하실 수가 있죠 267 00:15:02.071 --> 00:15:05.221 한마디로 Speed 값을 이용해서 우리는 268 00:15:05.221 --> 00:15:09.321 이 구체에 화염이 일어나는 것 같은 느낌을 269 00:15:09.321 --> 00:15:11.700 만들어 줄 수가 있는 겁니다 270 00:15:11.700 --> 00:15:16.450 지금과 같은 상태에서 단순히 매끈한 구체가 아닌 271 00:15:16.450 --> 00:15:20.181 조금 울퉁불퉁한, 마치 열기 때문에 일그러지는 듯한 272 00:15:20.181 --> 00:15:22.520 느낌을 좀 만들어 줄 건데요 273 00:15:22.520 --> 00:15:25.820 마찬가지로 이번에도 274 00:15:25.820 --> 00:15:27.720 Texture Sample 노드를 이용해서 275 00:15:27.720 --> 00:15:30.089 노멀 맵을 하나 가지고 올 겁니다 276 00:15:30.089 --> 00:15:34.989 콘텐츠 브라우저에서 StarterContent- Textures 항목에서 보시면 277 00:15:34.989 --> 00:15:37.720 이렇게 Detail_Rocky라고 하는 278 00:15:37.720 --> 00:15:41.560 볼록한 형태의 노멀맵 텍스처를 확인하실 수가 있죠 279 00:15:41.560 --> 00:15:45.720 이것을 Texture Sample에 연결을 해주고요 280 00:15:45.720 --> 00:15:51.959 이 텍스처는 World Position Offset이라는 곳에 연결을 해줄 건데 281 00:15:51.959 --> 00:15:55.639 그냥 연결을 하면 뭔가가 바뀌는 것 같긴 한데 282 00:15:55.639 --> 00:15:58.920 그렇게 눈에 띄게 알기 쉽지는 않습니다 283 00:15:58.920 --> 00:16:03.639 그래서 Multiply를 이용해서 값을 좀 뻥튀기 해줄 겁니다 284 00:16:03.639 --> 00:16:06.560 이것을 만약에 10배를 강조를 하면 285 00:16:06.560 --> 00:16:09.860 지금 보는 것처럼 외형적으로 일렁이듯이 286 00:16:09.860 --> 00:16:11.720 이렇게 울룩불룩하게 바뀌었죠 287 00:16:11.720 --> 00:16:16.599 이것을 앞서서 했던 노이즈의 패널을 연결해줬던 288 00:16:16.599 --> 00:16:20.840 그것을 그대로 이렇게 UV에 연결을 해보면 289 00:16:20.840 --> 00:16:23.040 지금 보시는 것처럼 이렇게 290 00:16:23.040 --> 00:16:26.085 구체 외형이 지금은 1이라서 굉장히 빠른데 291 00:16:26.085 --> 00:16:29.639 이거 빠르니까 0.1로 이렇게 바꿔 보겠습니다 292 00:16:29.639 --> 00:16:32.340 울룩불룩한 형태가 화면처럼 293 00:16:32.340 --> 00:16:36.160 마치 이글이글거리는 듯한 느낌으로 바뀌었죠 294 00:16:36.160 --> 00:16:38.959 이 World Position Offset이라고 하는 것은 295 00:16:38.959 --> 00:16:42.480 원래 구체가 갖고 있는 3D 표면에다가 296 00:16:42.480 --> 00:16:45.320 문자 그대로 Offset, 이동을 시키는 거죠 297 00:16:45.320 --> 00:16:48.800 근데 우리는 노멀맵을 이용해서 이동하니까 298 00:16:48.800 --> 00:16:55.140 노멀맵은 기본적으로 길이가 1 유닛인 텍스처입니다 299 00:16:55.140 --> 00:16:57.879 1 유닛은 1cm죠 300 00:16:57.879 --> 00:17:02.599 그래서 실제로 우리가 1m짜리 구체에 301 00:17:02.599 --> 00:17:06.249 1 유닛씩 울룩불룩하게 움직이라고 해봐야 302 00:17:06.249 --> 00:17:08.480 별로 티도 안 납니다 303 00:17:08.480 --> 00:17:13.760 Multiply를 이용해서 1 유닛을 5 유닛만큼 스케일을 키우거나 304 00:17:13.760 --> 00:17:16.720 10 유닛만큼, 10cm겠죠 305 00:17:16.720 --> 00:17:18.879 스케일을 키워서 적용을 하면 306 00:17:18.879 --> 00:17:22.519 이 울룩불룩한 형태가 조금 더 표현이 잘 되는 것이죠 307 00:17:22.519 --> 00:17:24.869 그래서 저는 일단 5 유닛 정도만 308 00:17:24.869 --> 00:17:28.440 이렇게 활성화를 시켜 두겠습니다 309 00:17:28.440 --> 00:17:31.958 이제 Fresnel 자체도 강도를 조정할 수 있게 310 00:17:31.958 --> 00:17:33.959 Multiply를 이용해서 311 00:17:33.959 --> 00:17:37.760 만약에 이 강도가 0.5가 된다면 312 00:17:37.760 --> 00:17:40.360 붉은색 영역이 0에 가까워질수록 313 00:17:40.360 --> 00:17:41.759 더 잘 보이게 될 거고요 314 00:17:41.759 --> 00:17:44.399 1보다 커진다면, 이를테면 2가 된다면 315 00:17:44.399 --> 00:17:46.149 지금 보시는 것처럼 탄 316 00:17:46.149 --> 00:17:49.479 새카만 영역이 훨씬 더 면적이 늘어나겠죠 317 00:17:49.479 --> 00:17:51.479 Fresnel이라고 하는 노드 자체가 318 00:17:51.479 --> 00:17:54.880 카메라가 바라보는 곳은 0, 가장자리 319 00:17:54.880 --> 00:17:59.559 카메라와 이렇게 카메라가 구체를 바라볼 때 마주보는 곳 320 00:17:59.559 --> 00:18:02.759 여기는 0이고, 90도로 이렇게 꺾여 있는 곳 321 00:18:02.759 --> 00:18:05.399 여기는 1이라는 값을 출력을 하는데 322 00:18:05.399 --> 00:18:09.440 여기에다가 Multiply로 훨씬 더 큰 값을 넣어 주게 되면 323 00:18:09.440 --> 00:18:13.720 이제 1에 해당하는 값들이 점점 여기까지 올라오는 겁니다 324 00:18:13.720 --> 00:18:18.199 그래서 블랙 영역이 점점 더 많이 보이게 되는 거죠 325 00:18:18.199 --> 00:18:22.440 그래서 우리는 지금까지 얘기한 이런 다양한 수치들을 326 00:18:22.440 --> 00:18:25.320 파라미터로 분류를 할 겁니다 327 00:18:25.320 --> 00:18:28.070 이것을 Material Instance라든가 328 00:18:28.070 --> 00:18:30.479 이런 걸로 제어를 하는 게 아니라 329 00:18:30.479 --> 00:18:33.559 나이아가라 시스템에서 제어를 해 줘야 되니까 330 00:18:33.559 --> 00:18:36.399 Dynamic Parameter라는 걸 먼저 만들고요 331 00:18:36.399 --> 00:18:40.279 우선 첫 번째 항목부터 차근차근 연결해 보겠습니다 332 00:18:40.279 --> 00:18:43.839 우선 FresnelPower라고 이름을 짓고 333 00:18:43.839 --> 00:18:47.839 기본 값은 1.2 정도로만 둬서 334 00:18:47.839 --> 00:18:51.520 Fresnel과 Multiply된 노드에 연결해서 335 00:18:51.520 --> 00:18:57.240 검은색 탄 영역을 조절할 수 있게끔 바꿔 줬구요 336 00:18:57.240 --> 00:19:03.320 두 번째 항목은 WorldOffsetVal라고 이름을 짓고 337 00:19:03.320 --> 00:19:05.670 우리가 World Offset에 연결한 것 338 00:19:05.670 --> 00:19:08.919 그대로 이렇게 연결해 줄 겁니다 339 00:19:08.919 --> 00:19:12.440 기본 값은 5로 두도록 하겠습니다 340 00:19:12.440 --> 00:19:15.160 그러면 이렇게 울룩불룩 해지겠죠 341 00:19:15.160 --> 00:19:18.960 Param3은 Noise라고만 이름 짓고요 342 00:19:18.960 --> 00:19:21.060 Noise 앞에 Fresnel과 343 00:19:21.060 --> 00:19:23.279 노이즈 텍스쳐 사이에 Multiply 있죠 344 00:19:23.279 --> 00:19:25.759 여기에다가 연결을 해 줄 겁니다 345 00:19:25.759 --> 00:19:27.959 여기에 연결되는 Noise 항목은 346 00:19:27.959 --> 00:19:31.559 0.1을 입력하면 Noise가 훨씬 더 도드라지게 347 00:19:31.559 --> 00:19:33.809 그리고 기본 값 1을 입력하면 348 00:19:33.809 --> 00:19:39.240 조금 더 탄 영역이 좁아지게 되겠죠 349 00:19:39.240 --> 00:19:42.340 그래서 FresnelPower와 약간 350 00:19:42.340 --> 00:19:45.119 기능적으로는 중복되어 있습니다 351 00:19:45.119 --> 00:19:48.769 단지 Noise의 정도를 결정하는 것이기 때문에 352 00:19:48.769 --> 00:19:52.359 Fresnel 값하고 약간 차이가 있는 거죠 353 00:19:52.359 --> 00:19:54.709 그래서 노이즈 텍스쳐가 바뀌면 이것도 354 00:19:54.709 --> 00:19:57.760 그때그때 바뀐 노이즈 텍스쳐에 맞게끔 355 00:19:57.760 --> 00:19:59.634 일정한 값을 전달해 주기 위해서 356 00:19:59.634 --> 00:20:02.484 Noise에다가 별도로 연결을 해준 거고요 357 00:20:02.484 --> 00:20:05.434 마지막으로 네 번째 파라미터 358 00:20:05.434 --> 00:20:09.180 이거는 Speed로 이름 지어서 359 00:20:09.180 --> 00:20:13.780 기본값 1로 이렇게 Speed 항목에다가 연결하겠습니다 360 00:20:13.780 --> 00:20:18.340 만약에 0.5로 바꾼다면 더 천천히 움직이겠고 361 00:20:18.340 --> 00:20:21.490 2로 입력한다면 훨씬 더 빠르게 움직이겠죠 362 00:20:21.490 --> 00:20:23.590 그래서 픽셀이 좀 깨집니다 363 00:20:23.590 --> 00:20:26.190 그래서 개인적으로 1 이상 쓰시는 것보단 364 00:20:26.190 --> 00:20:31.571 0.1이나 0.5 정도로 이렇게 세팅을 해 놓고요 365 00:20:31.571 --> 00:20:33.221 Apply를 하겠습니다 366 00:20:33.221 --> 00:20:36.821 이것을 익스플로전에 여기 보면 367 00:20:36.821 --> 00:20:41.806 Mesh Renderer에서 Enable Material Override를 활성화 하시고 368 00:20:41.806 --> 00:20:45.560 +를 눌러서 머티리얼을 연결할 수 있게끔 369 00:20:45.560 --> 00:20:48.610 그리고 여기에다가는 우리가 방금 만든 370 00:20:48.610 --> 00:20:52.460 M_ExplosionFX를 선택해서 371 00:20:52.460 --> 00:20:55.439 이렇게 화살표로 연결해 주겠습니다 372 00:20:55.439 --> 00:20:59.689 이 상태에서 Particle Update 항목을 클릭을 해서 373 00:20:59.689 --> 00:21:06.260 Dynamic Material Parameter로 이렇게 항목을 만들어 주고요 374 00:21:06.260 --> 00:21:08.960 여러분들이 이렇게 Dynamic으로 만들어 두면 375 00:21:08.960 --> 00:21:11.210 처음에는 빛이 이렇게 온전히 보이다가 376 00:21:11.210 --> 00:21:13.760 시간이 지날수록 FresnelPower가 377 00:21:13.760 --> 00:21:15.940 1.2 정도로 강해져야 되는데 378 00:21:15.940 --> 00:21:18.390 여기에 Noise 값 자체가 없다 보니까 379 00:21:18.390 --> 00:21:20.419 Noise 항목도 1로 두겠습니다 380 00:21:20.419 --> 00:21:23.419 WorldOffset도 마찬가지로 5cm라고 입력해두면 381 00:21:23.419 --> 00:21:25.207 지금은 애니메이션 되지 않죠 382 00:21:25.207 --> 00:21:27.007 왜냐하면 Speed가 0이니까 383 00:21:27.007 --> 00:21:30.698 Speed는 0.5 정도로 이렇게 회전이 되게끔 384 00:21:30.698 --> 00:21:33.998 WorldOffset 값을 10으로 입력하면 훨씬 더 불룩하게 385 00:21:33.998 --> 00:21:37.120 애니메이션 되는 것을 확인하실 수가 있습니다 386 00:21:37.120 --> 00:21:39.370 저장을 하고 월드에서 확인해 보면 387 00:21:39.370 --> 00:21:42.570 나이아가라 배치해 놓고 리셋 버튼을 누르시면 388 00:21:42.570 --> 00:21:44.720 이런 식으로 우리가 의도한 대로 389 00:21:44.720 --> 00:21:47.319 잘 작동하는 걸 확인하실 수가 있습니다 390 00:21:47.319 --> 00:21:50.739 다시 Explosion Material로 돌아와서요 391 00:21:50.739 --> 00:21:53.389 여기에서 우리가 파라미터로 만들어 놨던 392 00:21:53.389 --> 00:21:55.439 이 컬러 값이라고 하는 것은 393 00:21:55.439 --> 00:21:57.989 파라미터로 만드실 필요 없이 394 00:21:57.989 --> 00:22:00.980 Particle Color 노드를 이용해서 395 00:22:00.980 --> 00:22:04.900 Particle에서 직접적으로 수정을 해주는 것도 가능하고요 396 00:22:04.900 --> 00:22:08.550 여기에 있는 Alpha 항목을 통해서 397 00:22:08.550 --> 00:22:11.450 Opacity에 연결하거나 혹은 다른 398 00:22:11.450 --> 00:22:14.171 우리가 미리 만들어 놨던 이런 다양한 효과들하고 399 00:22:14.171 --> 00:22:17.220 같이 믹싱을 해서 표현하는 것도 가능합니다 400 00:22:17.220 --> 00:22:20.039 그래서 저는 이것을 Add를 이용해서 401 00:22:20.039 --> 00:22:22.939 Fresnel과 Dynamic 파라미터가 402 00:22:22.939 --> 00:22:24.989 Multiply 된 결과를 403 00:22:24.989 --> 00:22:28.160 이렇게 Add로 표현을 해 주고요 404 00:22:28.160 --> 00:22:31.960 이것을 Opacity에다가 우선은 연결해 놓겠습니다 405 00:22:31.960 --> 00:22:35.160 그럼 지금 보면 화면은 회색처럼 나오죠 406 00:22:35.160 --> 00:22:37.240 근데 이것을 Apply를 하고요 407 00:22:37.240 --> 00:22:39.639 나이아가라 화면으로 돌아가 보겠습니다 408 00:22:39.639 --> 00:22:42.739 Particle Update 항목에서 + 눌러서 409 00:22:42.739 --> 00:22:46.781 Scale Color라는 모듈을 하나 추가를 하고요 410 00:22:46.781 --> 00:22:49.131 여기 있는 Scale RGB 값은 411 00:22:49.131 --> 00:22:51.981 우리가 앞서서 파라미터에 정해놨던 412 00:22:51.981 --> 00:22:54.031 8, 1, 0.2 413 00:22:54.031 --> 00:22:58.699 레드 8, 그린 1, 블루 0.2로 하면 똑같이 나옵니다 414 00:22:58.699 --> 00:23:01.999 근데 여기 들어가는 Alpha 값의 변화를 여러분들이 좀 415 00:23:01.999 --> 00:23:04.580 주의 깊게 보실 필요가 있습니다 416 00:23:04.580 --> 00:23:08.330 지금은 잘 보이는데, Add 상태니까 잘 보이다가 417 00:23:08.330 --> 00:23:13.889 점점점점 값이 줄어서 이렇게 0보다 작아지게 되면 418 00:23:13.889 --> 00:23:16.500 중간에 구멍이 난 것처럼 보이죠 419 00:23:16.500 --> 00:23:20.860 그리고 더더더더 값이 커져서 420 00:23:20.860 --> 00:23:23.560 -1까지 내려가면 421 00:23:23.560 --> 00:23:26.919 거의 사라지는 것을 확인하실 수가 있습니다 422 00:23:26.919 --> 00:23:29.800 그래서 원래 잘 보이던 상태에서 423 00:23:29.800 --> 00:23:32.950 서서히 사라지게 만들어서 없어지게끔 424 00:23:32.950 --> 00:23:35.160 자연스럽게 사라질 수 있게끔 425 00:23:35.160 --> 00:23:38.560 이렇게 시간이 지남에 따라서 426 00:23:38.560 --> 00:23:41.119 Alpha 값의 변화를 만들어 줄 건데요 427 00:23:41.119 --> 00:23:43.919 우선 이 Scale Alpha의 428 00:23:43.919 --> 00:23:47.179 Float From Curve를 이용해서 값을 만들어 주는데 429 00:23:47.179 --> 00:23:48.979 시작하는 값은 1인데 430 00:23:48.979 --> 00:23:52.300 여기 가로 축이 100%일 때 끝나는 값을 431 00:23:52.300 --> 00:23:55.779 약 -2 정도로 이렇게 해 주시면 432 00:23:55.779 --> 00:23:59.940 지금 보시는 것처럼 자연스럽게 사라질 수 있습니다 433 00:23:59.940 --> 00:24:02.340 이게 너무 부드럽게 사라지는 것이 좀 434 00:24:02.340 --> 00:24:03.899 마음에 안 드시는 경우에는 435 00:24:03.899 --> 00:24:08.100 Material에서 Translucent가 아닌 Masked으로 바꿔서 436 00:24:08.100 --> 00:24:12.450 여기 있는 Opacity Mask 항목에 연결을 해서 437 00:24:12.450 --> 00:24:14.279 한번 적용해 보겠습니다 438 00:24:14.279 --> 00:24:17.529 이렇게 사라지면 조금 더 거친 질감으로 439 00:24:17.529 --> 00:24:20.679 사라지는 것을 눈으로 확인하실 수가 있죠 440 00:24:20.679 --> 00:24:24.179 이렇게, 이게 이제 나이아가라 미리보기 창에서는 441 00:24:24.179 --> 00:24:26.359 좀 떨림이 있는 것처럼 보이는데 442 00:24:26.359 --> 00:24:29.519 실제 월드 상에서 배치해서 리셋을 해 보면 443 00:24:29.519 --> 00:24:32.819 그렇게 떨림 없이 거친 질감 느낌 그대로 444 00:24:32.819 --> 00:24:35.439 사라지는 걸 확인하실 수 있습니다 445 00:24:35.439 --> 00:24:39.899 지금은 표면, 겉의 프론트 면만 그리기 때문에 446 00:24:39.899 --> 00:24:41.399 이렇게 사라진다고 했을 때 447 00:24:41.399 --> 00:24:43.749 우리 눈에 보이는 이 앞쪽 면 448 00:24:43.749 --> 00:24:44.899 구체가 있다고 하면 449 00:24:44.899 --> 00:24:48.420 이 구체 앞쪽 면만 이렇게 지금 보이는 상태입니다 450 00:24:48.420 --> 00:24:52.779 지면에 닿아 있는 이 뒤쪽은 안 보이는 상태죠 451 00:24:52.779 --> 00:24:55.179 그래서 부피감 있는 표현을 위해서 452 00:24:55.179 --> 00:24:59.019 여러분들이 이렇게 투명하게 사라진다고 하더라도 453 00:24:59.019 --> 00:25:01.990 Material 창에서 Two Sided 체크까지 해주시면 454 00:25:01.990 --> 00:25:06.159 참고로 Two Sided 체크를 하실 거면 Translucent보다 455 00:25:06.159 --> 00:25:09.059 Translucent로 하면 같은 면끼리 456 00:25:09.059 --> 00:25:11.739 깊이 계산이 제대로 안 되는 것이 있기 때문에 457 00:25:11.739 --> 00:25:13.589 Maskeded로 이렇게 두셔야 458 00:25:13.589 --> 00:25:16.659 온전한 구체의 형상이 잘 렌더링 됩니다 459 00:25:16.659 --> 00:25:19.209 그래서 Two Sided 체크까지 해 놓고 460 00:25:19.209 --> 00:25:21.192 리셋을 해 보면 자연스럽게 461 00:25:21.192 --> 00:25:23.340 이 낮은 상태에서도 한번 볼게요 462 00:25:23.340 --> 00:25:27.140 이런 식으로 뒷면까지 같이 사라지는 효과도 463 00:25:27.140 --> 00:25:28.242 확인하실 수 있습니다 464 00:25:28.594 --> 00:25:32.405 폭발 연기 및 스파크 효과 연출 465 00:25:32.739 --> 00:25:37.700 이제 이 Explosion에 마저 표현을 추가해 보겠습니다 466 00:25:37.700 --> 00:25:40.750 이번에는 이 SingleLoopingParticle을 467 00:25:40.750 --> 00:25:45.260 Ctrl+C, 그리고 Ctrl+V로 복사할 겁니다 468 00:25:45.260 --> 00:25:47.859 기존에 있던 우리가 원래 쓰던 것은 469 00:25:47.859 --> 00:25:51.419 MeshExplosion이라는 이름으로 바꿔 놓고요 470 00:25:51.419 --> 00:25:55.020 복사가 된 SingleLoopingParticle 같은 경우에는 471 00:25:55.020 --> 00:25:59.059 FireSmoke로 이름을 바꿔 놓을 겁니다 472 00:25:59.059 --> 00:26:00.959 그리고 Mesh Renderer는 끄고요 473 00:26:00.959 --> 00:26:03.460 Sprite Renderer를 사용할 겁니다 474 00:26:03.460 --> 00:26:05.110 원래 있던 Sprite Renderer, 475 00:26:05.110 --> 00:26:08.179 그리고 Initialize Particle에서도 마찬가지겠죠 476 00:26:08.179 --> 00:26:09.879 Mesh는 사용 안 하기 때문에 477 00:26:09.879 --> 00:26:13.733 Scale Mode를 리셋을 해서 Unset 상태 478 00:26:13.733 --> 00:26:19.179 그리고 Sprite Attributes의 항목을 Uniform으로 바꿔 놓겠습니다 479 00:26:19.179 --> 00:26:24.380 여기에는 불꽃이 생기면 자연스럽게 연기도 같이 생기잖아요 480 00:26:24.380 --> 00:26:27.020 그래서 그 연기 효과를 한번 표현을 해 볼 건데 481 00:26:27.020 --> 00:26:32.580 이 Sprite Renderer에 우선은 움직임을 먼저 만들어 줄 겁니다 482 00:26:32.580 --> 00:26:36.299 잠시 헷갈리니까 이 Mesh Explosion은 잠깐 꺼두겠습니다 483 00:26:36.299 --> 00:26:40.900 우리가 이 거대한 폭발이 이렇게 생겼을 때 484 00:26:40.900 --> 00:26:43.750 이 주변의 연기 같은 것들을 이렇게 485 00:26:43.750 --> 00:26:46.539 같이 퍼져나가게 만들려고 하는 거거든요 486 00:26:46.539 --> 00:26:50.266 그래서 구체가 커짐과 동시에 연기들도 같이 487 00:26:50.266 --> 00:26:54.460 이렇게 쭉쭉 뻗어 나갈 수 있게끔 만들려는 건데 488 00:26:54.460 --> 00:26:57.580 우선은 일정한 범위를 갖고 있어야 되니까 489 00:26:57.580 --> 00:26:59.280 Particle Spawn 항목에서 490 00:26:59.280 --> 00:27:03.380 Shape Location 모듈을 추가해 줍니다 491 00:27:03.380 --> 00:27:07.739 여기에서 마찬가지로 Add Velocity 항목을 추가해서 492 00:27:07.739 --> 00:27:10.979 속도값을 추가해 주면 지금 보시는 것처럼 493 00:27:10.979 --> 00:27:13.579 이렇게 임의의 파티클들이 494 00:27:13.579 --> 00:27:17.260 이렇게 점점이 생겨나는 것이 보이시죠 495 00:27:17.260 --> 00:27:19.099 지금은 현재 스피어 상태이기 때문에 496 00:27:19.099 --> 00:27:22.099 이렇게 동그란 가상의 구체에다가 497 00:27:22.099 --> 00:27:26.219 이 구체의 범위 안에서 랜덤하게 파티클이 생성이 돼서 498 00:27:26.219 --> 00:27:30.900 쭉쭉 위로 올라가는 형태로 만들어지고 있는 건데요 499 00:27:30.900 --> 00:27:33.900 우리는 이것의 형태를 약간 바꿔서 500 00:27:33.900 --> 00:27:37.500 Shape Location 항목을 Torus로, 그리고 501 00:27:37.500 --> 00:27:41.260 Radius를 약간 200 정도로 키워 놓겠습니다 502 00:27:41.260 --> 00:27:45.179 그리고 Velocity 항목도 Linear가 아니라 503 00:27:45.179 --> 00:27:50.020 From Point로 해서 한 160 정도 이렇게 504 00:27:50.020 --> 00:27:55.260 그러면 구체였던 스폰되는 범위가 Torus라고 505 00:27:55.260 --> 00:27:58.539 이제 도넛의 형태로 이렇게 바뀐 겁니다 506 00:27:58.539 --> 00:28:03.739 그래서 이렇게 입체감을 가진 도넛의 형태로 바뀌어서 507 00:28:03.739 --> 00:28:07.900 이 도넛의 범위 안에서 파티클들이 생성이 되는 것이죠 508 00:28:07.900 --> 00:28:11.099 이 상태에서 파티클이 버스팅되는 개수를 509 00:28:11.099 --> 00:28:14.020 약 50개 정도로 늘려 보겠습니다 510 00:28:14.020 --> 00:28:18.940 그러면 멀리서 보면 이런 형태로 퍼져나가는 게 보이시죠 511 00:28:18.940 --> 00:28:21.619 기본적으로 이 Torus라고 하는 항목은 512 00:28:21.619 --> 00:28:24.539 여기에 도넛이 우리 눈에 보이지 않게 이렇게 있는 겁니다 513 00:28:24.539 --> 00:28:25.900 이렇게 있는 상태에서 514 00:28:25.900 --> 00:28:29.619 Add Velocity가 From Point라고 하는 것은 515 00:28:29.619 --> 00:28:33.780 중심점을 기준으로 해서 이렇게 퍼져나가게 만들겠다 516 00:28:33.780 --> 00:28:35.179 이런 뜻이 됩니다 517 00:28:35.179 --> 00:28:37.460 그래서 여기에서 생성된 파티클이 518 00:28:37.460 --> 00:28:39.739 이렇게 중심점의 반대 방향으로 519 00:28:39.739 --> 00:28:42.260 이렇게 퍼져나갈 수 있게 만들 것이다 520 00:28:42.260 --> 00:28:45.140 이러한 설정을 해 둔 상태입니다 521 00:28:45.140 --> 00:28:47.820 이 상태에서 Explosion과 섞어서 보면 522 00:28:47.820 --> 00:28:50.900 워낙에 지금은 속도가 높지 않아서 523 00:28:50.900 --> 00:28:54.739 파티클 알갱이 입자들이 Explosion 스피어에 묻히죠 524 00:28:54.739 --> 00:28:58.739 이거는 300이라든가 400 이런 식으로 525 00:28:58.739 --> 00:29:00.619 임의로 이제 여러분들이 탑 뷰나 526 00:29:00.619 --> 00:29:03.979 이렇게 뷰를 바꿔서 보시면서 527 00:29:03.979 --> 00:29:06.700 그리고 월드에서도 마찬가지로 528 00:29:06.700 --> 00:29:09.219 미리 이렇게 터트려 보시면서 529 00:29:09.219 --> 00:29:13.739 속도감이 잘 맞는지 한번 확인해 보실 필요가 있습니다 530 00:29:13.739 --> 00:29:15.859 만약에 버스팅의 개수가 부족하다면 531 00:29:15.859 --> 00:29:19.900 이것을 150개 이런 식으로 많이 늘리셔도 됩니다 532 00:29:19.900 --> 00:29:21.900 그럼 눈에 조금 더 잘 띄겠죠 533 00:29:21.900 --> 00:29:24.299 이런 식으로 속도가 부족하다면 534 00:29:24.299 --> 00:29:26.619 여러분들이 임의로 600이라든가 535 00:29:26.619 --> 00:29:29.219 이렇게 속도값을 맞춰 주시면 되는데 536 00:29:29.219 --> 00:29:32.419 이제 여기에서 하나 좀 아쉬운 표현이 있습니다 537 00:29:32.419 --> 00:29:35.539 뭐냐면 이 파티클이 원래 있던 538 00:29:35.539 --> 00:29:38.380 이 폭파 지점에서 이렇게 서서히 커질 때 539 00:29:38.380 --> 00:29:40.419 그렇게 확장이 됨에 따라서 540 00:29:40.419 --> 00:29:44.059 이 지면에 맞닿은 이 부위들하고 541 00:29:44.059 --> 00:29:45.940 쉽게 얘기해서 불이 붙으면서 542 00:29:45.940 --> 00:29:48.099 이렇게 연기가 나는 거거든요 543 00:29:48.099 --> 00:29:53.059 근데 지금 이 FireSmoke에서 생기는 연기는 544 00:29:53.059 --> 00:29:56.140 이 폭파 지점에서 약간 떨어진 545 00:29:56.140 --> 00:29:59.859 Torus, 도넛의 형태로 이렇게 있다고 말씀드렸죠 546 00:30:00.000 --> 00:30:03.160 여기서부터 그냥 일자로 쭉 오는 불입니다 547 00:30:03.160 --> 00:30:07.000 이렇게 중간 중간 중간 지속적으로 발생하는 게 아니라 548 00:30:07.000 --> 00:30:12.120 한 번 생성된 것이 쭉 하고 오는 이러한 형태이기 때문에 549 00:30:12.120 --> 00:30:13.920 다소 연기라는 느낌보다는 550 00:30:13.920 --> 00:30:16.120 나중에 이걸 텍스처를 바꿔줄 수도 있는데 551 00:30:16.120 --> 00:30:19.559 연기라는 느낌보다는 그냥 불꽃이 퍼지듯이 552 00:30:19.559 --> 00:30:22.480 그렇게만 보이는 단점이 좀 있습니다 553 00:30:22.480 --> 00:30:26.240 그래서 이 느낌을 조금 완화시키기 위해서 554 00:30:26.240 --> 00:30:30.760 이 FireSmoke를 Ctrl+C, Ctrl+V로 복사를 하고요 555 00:30:30.760 --> 00:30:36.040 그럼 FireSmoke, FireSmoke001 이렇게 두 가지가 되어있죠 556 00:30:36.040 --> 00:30:39.080 서브 이미터라는 개념을 이용해서 557 00:30:39.080 --> 00:30:42.757 우리가 아까 전에 이 폭발 진원지에서부터 558 00:30:42.757 --> 00:30:45.160 이렇게 쭉 흘러나오면서 559 00:30:45.160 --> 00:30:47.959 그때 그때 그때 이렇게 커짐에 따라서 560 00:30:47.959 --> 00:30:53.480 이 만나는 지면하고 발화하고, 만나는 지점하고 발화하고 561 00:30:53.480 --> 00:30:56.520 이런 식으로 연출이 될 수 있게끔 할 건데 562 00:30:56.520 --> 00:31:01.919 어쨌든 이 불꽃이, 한 번 생성된 불꽃이 쭉 지나가죠 563 00:31:01.919 --> 00:31:06.120 이때 특정한 위치를 지나갈 때마다 564 00:31:06.120 --> 00:31:09.239 이렇게 일정한 간격으로 신호를 줘서 565 00:31:09.239 --> 00:31:11.519 여기에서 연기를 피워 566 00:31:11.519 --> 00:31:13.559 두 번째 지점에서 또 연기를 피워 567 00:31:13.559 --> 00:31:14.959 세 번째에서 연기 피워 568 00:31:14.959 --> 00:31:17.680 이런 식으로 불꽃이 지나가는 자리마다 569 00:31:17.680 --> 00:31:22.040 연기를 피울 수 있게끔 하는 기능으로 한번 바꿔볼 겁니다 570 00:31:22.040 --> 00:31:27.879 그리고 보통 이런 기능을 우리는 서브 이미터 내지는 571 00:31:27.879 --> 00:31:31.279 서브 파티클이라고 얘기를 하죠 572 00:31:31.279 --> 00:31:34.800 그래서 원래 있던 파티클의 정보를 이용해서 573 00:31:34.800 --> 00:31:38.680 두 번째로 서브로 생기는 두 번째 파티클들이 574 00:31:38.680 --> 00:31:42.320 어떻게 생성될 건지를 컨트롤 하는 건데요 575 00:31:42.320 --> 00:31:45.559 우선 이걸 위해서는 기준이 되는 파티클의 576 00:31:45.559 --> 00:31:49.199 여기 첫 번째 이 Emitter Properties 항목 보면 577 00:31:49.199 --> 00:31:51.959 Requires Persistent IDs라는 항목 있죠 578 00:31:51.959 --> 00:31:54.360 이거를 먼저 체크를 해 줘야 됩니다 579 00:31:54.360 --> 00:31:56.560 나는 여기에서 있는 580 00:31:56.560 --> 00:31:59.160 FireSmoke에 있는 정보를 이용해서 581 00:31:59.160 --> 00:32:01.559 서브 파티클들을 생성할 거야 582 00:32:01.559 --> 00:32:04.599 그러니 등록을 해줘라는 뜻이 되는 거고 583 00:32:04.599 --> 00:32:08.919 마찬가지로 Particle Update에서 + 버튼을 눌러서 584 00:32:08.919 --> 00:32:12.160 Generate, 세 가지 이벤트가 있는데 585 00:32:12.160 --> 00:32:16.320 우리는 위치의 변화마다 파티클을 터뜨릴 거니까 586 00:32:16.320 --> 00:32:21.000 Generate Location Event 모듈을 추가해 줍니다 587 00:32:21.000 --> 00:32:24.160 그리고 나면 복사가 된 서브 파티클에는 588 00:32:24.160 --> 00:32:26.800 스테이지에 + 버튼을 눌러서 589 00:32:26.800 --> 00:32:29.150 Event Handler라고 항목을 590 00:32:29.150 --> 00:32:30.800 새로 하나 추가해 주고요 591 00:32:30.800 --> 00:32:32.880 Event Handler Properties에서는 592 00:32:32.880 --> 00:32:37.520 내가 어떠한 이미터의 정보를 받아 올 건지 593 00:32:37.520 --> 00:32:40.600 소스 부분을 먼저 연결을 해줍니다 594 00:32:40.600 --> 00:32:43.360 우리가 이미 퍼시던트 아이디를 등록을 해놨기 때문에 595 00:32:43.360 --> 00:32:47.559 FireSmoke에 Location Event가 바로 검색이 되죠 596 00:32:47.559 --> 00:32:51.559 그래서 나는 FireSmoke에 597 00:32:51.559 --> 00:32:54.039 Location Event에서 신호를 받아다가 598 00:32:54.039 --> 00:32:57.880 현재 스폰이 되고 있는 이 항목을 두 번째 599 00:32:57.880 --> 00:33:02.279 실행되는 모드를 스폰이 된 파티클에 맞춰서 600 00:33:02.279 --> 00:33:06.639 나는 이를테면 1개씩 폭파시킬 거야 601 00:33:06.639 --> 00:33:09.440 내지는 10개씩 폭파시킬 거야 602 00:33:09.440 --> 00:33:12.279 이런 것들을 결정할 수가 있게 됩니다 603 00:33:12.279 --> 00:33:14.312 위에서 보면은 훨씬 더 많은 수의 604 00:33:14.312 --> 00:33:17.360 파티클이 생성되는 걸 보실 수가 있죠 605 00:33:17.360 --> 00:33:20.360 그리고 이러한 이벤트를 나는 606 00:33:20.360 --> 00:33:24.520 Receive Location Event를 통해서 받을 거야 607 00:33:24.520 --> 00:33:28.399 라고 Event Handler에 + 버튼을 눌러서 608 00:33:28.399 --> 00:33:30.360 Receive 항목까지 추가해 주시면 609 00:33:30.360 --> 00:33:35.119 이런 식으로 파티클이 훨씬 더 웅장하게 610 00:33:35.119 --> 00:33:38.160 더 많이 생성되는 걸 보실 수가 있죠 611 00:33:38.160 --> 00:33:39.679 월드 상에서도 한번 보겠습니다 612 00:33:39.679 --> 00:33:42.229 리셋을 시켜서 이런 식으로 613 00:33:42.229 --> 00:33:44.999 조금만 더 떨어져서 볼까요, 리셋 614 00:33:44.999 --> 00:33:47.600 이런 식으로 이제 만들 수가 있는데 615 00:33:47.600 --> 00:33:50.000 이제 여기서 어떤 형태로 퍼져 나갈지 616 00:33:50.000 --> 00:33:53.080 어떠한 속도감을 가지고 퍼져 나갈지는 617 00:33:53.080 --> 00:33:55.119 여러분들이 정하시면 되고 618 00:33:55.119 --> 00:33:57.399 Velocity 항목도 마찬가지입니다 619 00:33:57.399 --> 00:33:59.639 이것을 기존에 있던 Velocity 620 00:33:59.639 --> 00:34:01.800 여기서 얘기하는 기존이라고 하면 621 00:34:01.800 --> 00:34:03.199 FireSmoke를 얘기하는 거죠 622 00:34:03.199 --> 00:34:06.899 이벤트를 뿌리는 FireSmoke의 Velocity 값을 623 00:34:06.899 --> 00:34:11.212 그대로 이어받아서 퍼질 건지 말 건지 624 00:34:11.212 --> 00:34:14.199 이런 것들을 설정해 줄 수가 있죠 625 00:34:14.199 --> 00:34:16.279 여기에다가는 단순히 불꽃이 아니라 626 00:34:16.279 --> 00:34:18.959 연기의 이미지를 입힐 것이기 때문에 627 00:34:18.959 --> 00:34:20.880 Sprite Renderer에다가는 628 00:34:20.880 --> 00:34:25.119 Material에 Smoke라고 연결을 해 보겠습니다 629 00:34:25.119 --> 00:34:28.600 여기서 보면 총 두 가지의 Smoke가 있죠 630 00:34:28.600 --> 00:34:33.040 그 중에서도 첫 번째에 있는 Smoke_SubUV 631 00:34:33.040 --> 00:34:35.239 이것을 클릭을 해 주고요 632 00:34:35.239 --> 00:34:36.440 색깔이 좀 이상해졌죠? 633 00:34:36.440 --> 00:34:39.640 이건 나중에 Scale Color를 통해서 바꿔 줄 겁니다 634 00:34:39.640 --> 00:34:42.640 여기에 있는 Smoke_SubUV 같은 경우에는 635 00:34:42.640 --> 00:34:44.760 Material을 더블 클릭해서 보면 636 00:34:44.760 --> 00:34:47.880 여러 장의 이미지가 이렇게 합쳐진 637 00:34:47.880 --> 00:34:51.040 세로로 8장, 가로로 8장의 이미지 638 00:34:51.040 --> 00:34:54.679 총 64장의 이미지가 연결되어 있는 639 00:34:54.679 --> 00:34:57.160 이러한 형태의 연기 이펙트고요 640 00:34:57.160 --> 00:35:00.600 연기 이펙트용 시퀀스 텍스처라고 641 00:35:00.600 --> 00:35:02.100 보통 얘기를 하죠 642 00:35:02.100 --> 00:35:05.948 그래서 이것을 사용하기 위해서는 Sprite Renderer 643 00:35:05.948 --> 00:35:09.640 지금 제가 하고 있는 건 FireSmoke001입니다 644 00:35:09.640 --> 00:35:12.519 여기에 있는 SubUV에 645 00:35:12.519 --> 00:35:14.880 총 몇 장의 이미지로 이루어져 있는지 646 00:35:14.880 --> 00:35:19.480 이 텍스처의 구성을 이렇게 Sub Image Size를 통해서 647 00:35:19.480 --> 00:35:22.720 8장, 8장 입력을 해 주고요 648 00:35:22.720 --> 00:35:25.040 Update에서는 이 이미지가 649 00:35:25.040 --> 00:35:27.760 첫 번째 프레임에 멈춰 있는 게 아니라 650 00:35:27.760 --> 00:35:31.440 64번째 이미지까지 애니메이션 될 수 있게끔 651 00:35:31.440 --> 00:35:35.239 Sub UV Animation 모듈을 추가해서 652 00:35:35.239 --> 00:35:37.480 이 항목 중에 Setup 부분에서 653 00:35:37.480 --> 00:35:42.000 Sprite Renderer 이것을 우리가 가지고 있는 654 00:35:42.000 --> 00:35:44.959 Sprite Renderer로 연결을 해 줍니다 655 00:35:44.959 --> 00:35:49.200 이러한 상태에서, 이건 약간 위로 올리도록 하겠습니다 656 00:35:49.200 --> 00:35:52.880 Sub UV Animation은 컬러 값을 좀 바꿔 줘야 됩니다 657 00:35:52.880 --> 00:35:56.839 지금은 약간 이 Scale RGB 값을 끄고 보면 658 00:35:56.839 --> 00:35:59.720 이런 식으로 값이, 원래는 흰색인데 659 00:35:59.720 --> 00:36:02.040 우리가 지금 빨간색도 넣었고 660 00:36:02.040 --> 00:36:04.600 기존에 복사가 됐던 이 Alpha 값이 661 00:36:04.600 --> 00:36:06.920 -1까지 내려가는 이 문제도 있었죠 662 00:36:06.920 --> 00:36:08.480 -2까지 내렸던 663 00:36:08.480 --> 00:36:11.000 그래서 이건 다시 0으로 좀 놔두고요 664 00:36:11.000 --> 00:36:13.480 컬러 값을 좀 바꿔 줄 건데 665 00:36:13.480 --> 00:36:16.920 우선 Scale RGB라고 하는 값을 666 00:36:16.920 --> 00:36:20.160 X, Y, Z, 레드, 그린, 블루로 되어 있던 걸 667 00:36:20.160 --> 00:36:21.959 아래쪽 화살표를 눌러서 668 00:36:21.959 --> 00:36:25.079 Vector From Curve로 만들어 주고요 669 00:36:25.079 --> 00:36:27.040 여러분들이 값을 바꾸기 편하게 670 00:36:27.040 --> 00:36:31.440 Scale Curve 부분을 8, 1, 0.2 이런 식으로 671 00:36:31.440 --> 00:36:33.920 색상을 추가해 줄 겁니다 672 00:36:33.920 --> 00:36:36.959 이렇게, 그리고 나서 이 그래프 상태에서 673 00:36:36.959 --> 00:36:41.799 100% 상태일 때, 이 부분을 -1로 바꿔서 674 00:36:41.799 --> 00:36:46.720 시간이 지날수록 어두워질 수 있게 바꿔 줄 거고요 675 00:36:46.720 --> 00:36:48.920 이전에 붉었던 색깔이 이렇게 676 00:36:48.920 --> 00:36:51.200 어두워지는 걸 확인하실 수가 있죠 677 00:36:51.200 --> 00:36:52.760 그리고 Alpha는 자연스럽게 이렇게 678 00:36:52.760 --> 00:36:55.359 아래로 꺼지도록 놔둘 겁니다 679 00:36:55.359 --> 00:36:58.200 지금은 입자들이 너무 자잘해서 680 00:36:58.200 --> 00:37:01.559 연기의 이미지가 크게 크게 눈에 안 들어오는데 681 00:37:01.559 --> 00:37:10.119 Update 항목에다가 Scale Sprite Size 항목을 추가해서 682 00:37:10.119 --> 00:37:13.019 크기가 작았을 때도 0은 아니게 683 00:37:13.019 --> 00:37:16.160 0.3 정도 되게끔 해 두고요 684 00:37:16.160 --> 00:37:19.559 Uniform Curve Scale을 10배 정도만 키워볼까요 685 00:37:19.559 --> 00:37:20.959 이런 식으로 686 00:37:20.959 --> 00:37:25.399 엄청나게 지금 많은 양의 파티클들이 뿌려지고 있습니다 687 00:37:25.399 --> 00:37:28.519 지금 실제로 뿌려지는 파티클의 양을 보면 688 00:37:28.519 --> 00:37:31.419 대략 최대 4만 개 정도까지 689 00:37:31.419 --> 00:37:33.399 올라가는 걸 확인하실 수가 있는데 690 00:37:33.399 --> 00:37:35.799 이걸 여러분들이 조절하시고 싶다면 691 00:37:35.799 --> 00:37:37.959 이 Spawn Burst를 일단 꺼 보겠습니다 692 00:37:37.959 --> 00:37:39.679 이걸 끄면 이런 식으로 693 00:37:39.679 --> 00:37:43.559 그리고 Event Handler에서 스폰 되는 양도 마찬가지 694 00:37:43.559 --> 00:37:48.059 최대 프레임당 100개 정도까지만 나는 허용할 거야라고 695 00:37:48.059 --> 00:37:52.160 이런 식으로 하면 개수를 임의로 조정할 수가 있게 되죠 696 00:37:52.160 --> 00:37:55.359 이거 Spawn Number는 1로 해 두셔도 됩니다 697 00:37:55.359 --> 00:37:56.399 이렇게 1로 698 00:37:56.399 --> 00:38:01.559 그래서 실제로 이것을 Explosion과 섞어서 699 00:38:01.559 --> 00:38:03.119 월드 상에서 보게 되면 700 00:38:03.119 --> 00:38:07.679 리셋을 눌러서 이런 식으로 퍼져나가는 게 보이시죠 701 00:38:07.679 --> 00:38:10.229 이전에 단순히 FireSmoke랑 702 00:38:10.229 --> 00:38:12.880 느낌 차이를 좀 비교해서 보여드리면 703 00:38:12.880 --> 00:38:16.320 FireSmoke에서 이렇게 자잘한 작은 이펙트가 704 00:38:16.320 --> 00:38:19.970 불꽃 번지듯이, 이렇게 살짝살짝 튀기듯이 705 00:38:19.970 --> 00:38:21.720 나오는 걸 보실 수가 있는데 706 00:38:21.720 --> 00:38:26.359 서브 이미터를 활용하면 그 연기의 범위나 속도가 다르죠 707 00:38:26.359 --> 00:38:29.909 물론 기존에 있던 속도를 그대로 내려받아서 708 00:38:29.909 --> 00:38:31.839 추가되는 형태이기 때문에 709 00:38:31.839 --> 00:38:35.280 속도값이 이전보다는 조금 줄어야 됩니다 710 00:38:35.280 --> 00:38:38.359 200이라든가 이런 식으로 약간 줄여야 711 00:38:38.359 --> 00:38:41.960 상대적으로 이 타이밍을 맞추기가 쉬워지는 거죠 712 00:38:41.960 --> 00:38:46.159 그리고 FireSmoke001은 Initialize Particle 항목에서 713 00:38:46.159 --> 00:38:50.679 Lifetime을 0.5 정도로 조금 줄여 놓겠습니다 714 00:38:50.679 --> 00:38:53.440 그러면 이런 식으로 이펙트가 터지면서 715 00:38:53.440 --> 00:38:57.359 자연스럽게 연기가 퍼져나가게끔 만들 수도 있고요 716 00:38:57.359 --> 00:38:59.159 여러분들이 만약에 Velocity가 717 00:38:59.159 --> 00:39:01.859 너무 바닥을 기어가듯이 퍼지는 게 718 00:39:01.859 --> 00:39:03.960 좀 문제라고 생각하신다면 719 00:39:03.960 --> 00:39:06.400 Velocity 모드를 In Cone으로 바꿔서 720 00:39:06.400 --> 00:39:10.359 나중에 월드 상에서 한번 보겠습니다 721 00:39:10.359 --> 00:39:14.119 바닥을 통해서 퍼지던 이 파티클 효과 722 00:39:14.119 --> 00:39:16.869 이것이 나중에 In Cone으로 723 00:39:16.869 --> 00:39:19.080 조금만 값을 좀 키워 보겠습니다 724 00:39:19.080 --> 00:39:22.359 일부러 이런 식으로 값을 좀 다르게 줄 수 있죠 725 00:39:22.359 --> 00:39:26.039 이 In Cone의 Axis가 X축으로 1로 되어 있어서 그런데 726 00:39:26.039 --> 00:39:29.760 이걸 Z축으로 1로 바꾼다면 위로 퍼지게 됩니다 727 00:39:29.760 --> 00:39:32.559 일부러 제가 이거는 값의 차이가 좀 크게 보이라고 728 00:39:32.559 --> 00:39:35.280 좀 과장된 값을 넣은 거고요 729 00:39:35.280 --> 00:39:37.559 1800까지 넣으실 필요는 없고 730 00:39:37.559 --> 00:39:40.959 약하게 해서 서서히 위로 좀 빠질 수 있게 731 00:39:40.959 --> 00:39:43.840 표현을 해주셔도 좋습니다 732 00:39:43.840 --> 00:39:47.679 그래서 자연스럽게 연기가 위로 올라갈 수 있게끔 733 00:39:47.679 --> 00:39:50.840 속도 값을 살짝만 줘서 퍼질 수 있게 해놓고요 734 00:39:50.840 --> 00:39:53.119 앵글 값이나 이런 거 다 마찬가지입니다 735 00:39:53.119 --> 00:39:57.679 그래서 자연스럽게 일정한 폭파 범위에서부터 퍼지게끔 736 00:39:57.679 --> 00:40:02.200 그리고 뒤에 오는 이 불꽃의 컬러의 변화도 보면 737 00:40:02.200 --> 00:40:04.400 이렇게 시간이 지남에 따라서 738 00:40:04.400 --> 00:40:07.640 레드에서 시작했던 것이 블랙으로 서서히 739 00:40:07.640 --> 00:40:11.960 레드였던 것이 블랙으로, 바깥으로 갈수록 740 00:40:11.960 --> 00:40:14.919 계속해서 레드였던 것이 블랙으로 바뀌는 것이 741 00:40:14.919 --> 00:40:17.719 순차적으로 일어나게끔 되죠 742 00:40:17.719 --> 00:40:22.379 그래서 아무래도 조금 단조로운 효과나 이런 것들을 743 00:40:22.379 --> 00:40:25.479 서브 이미터를 통해서 완화시킬 수가 있습니다 744 00:40:25.479 --> 00:40:30.239 여러분들이 이런 식으로 서브 이미터를 활용하시는 것도 745 00:40:30.239 --> 00:40:34.679 파티클을 풍성하게 하는 데 굉장히 좋은 방법입니다 746 00:40:34.679 --> 00:40:37.159 여기에서 FireSmoke 같은 경우에 747 00:40:37.159 --> 00:40:41.479 굳이 그 동글동글한 붉은색 입자를 보일 필요가 없기 때문에 748 00:40:41.479 --> 00:40:44.579 Scale Color에서 얘는 Alpha 값을 749 00:40:44.579 --> 00:40:46.679 완전히 커브를 쓰지 않고 750 00:40:46.679 --> 00:40:49.960 이걸 리셋을 해가지고 Scale Alpha 값을 751 00:40:49.960 --> 00:40:51.560 Float From Curve가 아니라 752 00:40:51.560 --> 00:40:55.280 Scale Alpha 값으로 0을 해둔다고 하더라도 753 00:40:55.280 --> 00:40:59.359 서브로 생기는 FireSmoke001 같은 경우에는 754 00:40:59.359 --> 00:41:01.520 영향을 끼치지 않습니다 755 00:41:01.520 --> 00:41:03.080 FireSmoke가 눈에 보이지 않게 756 00:41:03.080 --> 00:41:05.559 이렇게 점점점점 신호를 주고 가는 거죠 757 00:41:05.559 --> 00:41:09.479 그럼 이 신호에 맞춰서 실제로 작동하는 건 758 00:41:09.479 --> 00:41:12.279 여기 있는 FireSmoke001이 759 00:41:12.279 --> 00:41:14.719 서브 이미터로서 작동을 해서 760 00:41:14.719 --> 00:41:18.159 계속해서 연기를 흩뿌리면서 다니는 겁니다 761 00:41:18.159 --> 00:41:22.315 지금도 개수는 대략 이런 식으로 1500개 정도까지 762 00:41:22.335 --> 00:41:25.479 이렇게 좀 많이 나오고 있는 편입니다 763 00:41:25.479 --> 00:41:30.080 파티클을 만들면서 이런 구체 크기가 커지는 타이밍 764 00:41:30.080 --> 00:41:33.599 그리고 사라지는 타이밍과 파티클 입자들이 765 00:41:33.599 --> 00:41:36.400 이런 식으로 생성되는 타이밍을 맞추기가 어려운데 766 00:41:36.400 --> 00:41:39.520 이러한 Event 기능을 이용해서 767 00:41:39.520 --> 00:41:42.119 상대적으로 정확하게 맞출 수도 있고요 768 00:41:42.119 --> 00:41:45.640 빈도가 너무 많다고 생각이 드신다면 769 00:41:45.640 --> 00:41:49.840 이벤트를 보내는 주기를 15번 정도로 줄인다거나 770 00:41:49.840 --> 00:41:54.359 1번 정도로 줄이면 점점점 해가지고 땅땅땅 이렇게 되죠 771 00:41:54.359 --> 00:41:55.479 이건 좀 부자연스럽죠 772 00:41:55.479 --> 00:41:58.520 그냥 줄 수 있다는 걸 보여드리기 위한 거니까 773 00:41:58.520 --> 00:42:04.479 그래서 이것을 저는 딱 20 정도로만 두겠습니다 774 00:42:04.479 --> 00:42:06.960 그래서 다다다다다다닥 이런 식으로 775 00:42:06.960 --> 00:42:11.520 경계에 있는 것들을 태우면서 가는 듯한 느낌이 나게끔 776 00:42:11.520 --> 00:42:14.039 이렇게 표현을 해봤고요 777 00:42:14.039 --> 00:42:16.489 여기에서 여러분들이 하나 더 778 00:42:16.489 --> 00:42:18.880 해보시면 좋은 표현 중에 하나가 779 00:42:18.880 --> 00:42:21.039 우클릭해서 Add Emitter로 780 00:42:21.039 --> 00:42:25.689 OmnidirectionalBurst라고 하는 템플릿을 781 00:42:25.689 --> 00:42:28.200 하나 선택해서 추가해 보겠습니다 782 00:42:28.200 --> 00:42:31.200 이거는 우클릭해서 isolated 모드로 보면 783 00:42:31.200 --> 00:42:34.239 이런 식으로 뻥 하고 터지는 이런 효과입니다 784 00:42:34.239 --> 00:42:36.039 이거는 Velocity 값을 785 00:42:36.039 --> 00:42:39.919 600~1200 정도로 좀 크게 주고요 786 00:42:39.919 --> 00:42:42.000 그래야지 멀리 퍼질 테니까 787 00:42:42.000 --> 00:42:45.559 이건 나중에 실제 Emitter랑 섞어 보면서 바꿀 겁니다 788 00:42:45.559 --> 00:42:48.659 그리고 Origin Offset은 789 00:42:48.659 --> 00:42:52.440 OmnidirectionalBurst의 기본 값으로 이렇게 잡혀 있는 걸 790 00:42:52.440 --> 00:42:53.960 그냥 0으로 두겠습니다 791 00:42:53.960 --> 00:42:57.280 굳이 마이너스로, 아래로 내릴 필요는 없으니까 792 00:42:57.280 --> 00:42:59.039 그리고 나서 Scale Color 값도 793 00:42:59.039 --> 00:43:05.400 Scale RGB 항목을 8, 1, 0.2로 펑하고 맞춰서 794 00:43:05.400 --> 00:43:09.520 작은 스파크가 튀는 느낌으로 만들어 주려고 하는 거고요 795 00:43:09.520 --> 00:43:12.488 여기에다가 Collision이라는 기능을 796 00:43:12.488 --> 00:43:13.941 하나 더 추가할 겁니다 797 00:43:13.941 --> 00:43:14.860 Collision 798 00:43:14.860 --> 00:43:17.159 Collision이라는 기능이 있으면 799 00:43:17.159 --> 00:43:20.080 이 각각의 파티클이 모든 파티클은 아니지만 800 00:43:20.080 --> 00:43:24.119 일부 충돌할 수 있는 성질을 지니게 돼서요 801 00:43:24.119 --> 00:43:26.599 이걸 잠깐 리셋을 월드 상에서 뿌려 보면 802 00:43:26.599 --> 00:43:29.960 바닥에 그대로 이렇게 튕겨오르는 것들이 보이시죠 803 00:43:29.960 --> 00:43:34.400 이런 식으로 약간 사실적인 느낌을 더해 줄 수가 있습니다 804 00:43:34.400 --> 00:43:37.393 그래서 지금까지 만들어 놓은 805 00:43:37.393 --> 00:43:40.200 isolated 우클릭해서 이건 해제를 해 주고요 806 00:43:40.200 --> 00:43:42.200 Velocity 값이 조금 더 커야겠네요 807 00:43:42.200 --> 00:43:46.280 1,200에 1,600 정도는 돼야 될 것 같습니다 808 00:43:46.280 --> 00:43:47.840 리셋을 해서 터뜨려 보면 809 00:43:47.840 --> 00:43:51.280 이런 식으로 폭파 효과와 함께 810 00:43:51.280 --> 00:43:53.200 거대한 화염 같은 느낌으로 811 00:43:53.200 --> 00:43:56.960 스파크와 화염과 연기와 이런 것들이 812 00:43:56.960 --> 00:44:00.119 이런 식으로 마무리될 수 있게끔 되었고요 813 00:44:00.119 --> 00:44:02.840 여기에서 여러분들이 임의로 Lifetime이라든가 814 00:44:02.840 --> 00:44:05.280 이런 것들을 더 조절을 해서 815 00:44:05.280 --> 00:44:08.520 자연스럽게 수정해 보시면 좋겠죠 816 00:44:08.520 --> 00:44:12.679 이번 시간에는 꼭 이 서브 이미터의 개념에 대해서 817 00:44:12.679 --> 00:44:14.387 기억해 두시면 좋을 것 같습니다 818 00:44:17.159 --> 00:44:20.520 이번 시간에 학습해 본 폭발 이펙트는 819 00:44:20.520 --> 00:44:25.359 속도를 제어하는 다양한 방법들에 대해서 알아봤고요 820 00:44:25.359 --> 00:44:28.479 또한 셰이더의 움직임을 이용해서 821 00:44:28.479 --> 00:44:32.119 메시의 움직임을 제어해 봤습니다 822 00:44:32.119 --> 00:44:37.200 메시 파티클을 활용한 효과로 충격파와 연기와 같은 823 00:44:37.200 --> 00:44:41.159 우리가 흔히 부피로 인식되기 어려운 개념들을 824 00:44:41.159 --> 00:44:45.760 시각적으로 어떻게 표현하는지도 활용해 봤습니다 825 00:44:45.760 --> 00:44:48.510 그럼 이번 시간 학습한 내용을 정리하면서 826 00:44:48.510 --> 00:44:50.200 마무리하겠습니다 827 00:44:50.200 --> 00:44:51.035 감사합니다 828 00:44:52.067 --> 00:44:52.867 폭발 반경 세팅 및 폭발 효과 연출 나이아가라 생성 나이아가라 애셋 생성(SingleLoopingParticle 템플릿) 후 SpriteRenderer 비활성화 829 00:44:52.867 --> 00:44:53.717 MeshRenderer 추가 > StaticMesh Index[0] : Sphere로 변경 Emitter State 830 00:44:53.717 --> 00:44:54.517 Life Cycle Mode : Self, Loop Behavior : Once, Loop Duration Mode : Fixed, Loop Duration : 1.0 831 00:44:54.517 --> 00:44:55.217 Initialize Particle LSprite Size Mode : Unset, Lifetime : 리셋 (1.0), Mesh Scale Mode : Uniform, 1.0 832 00:44:55.217 --> 00:44:56.117 Scale Mesh Size Particle update에 추가, Scale Factor : Vector From Curve 833 00:44:56.117 --> 00:44:56.998 Vector Curve (x : 0, y : 0), (x : 1, y : 1) Scale Curve : Vector from Float, Value 10 834 00:44:56.998 --> 00:44:57.748 M_ExplosionFX 생성 Blend Mode: Translucent, Shading Model: Unlit Lerp 생성 후 Lerp A: 835 00:44:57.748 --> 00:44:58.489 VectorParameter (FireColor, 8, 1, 0.2), Lerp B: Constant3Vector (0, 0, 0), Lerp Alpha: Fresnel, 836 00:44:58.489 --> 00:44:59.220 Lerp 출력: Emissive Texture Sample: T_Perlin_Noise_M Panner 노드 생성: Speed X: 1, Y: 1 / Texture Sample 837 00:44:59.220 --> 00:44:59.871 노드 UV에 연결 Multiply 생성 후 A: Texture Sample, B: 1, Fresnel: ExponentIn에 Multiply 결과 연결 Texture Sample: 838 00:44:59.871 --> 00:45:00.563 T_Detail_Rocky_N Panner 노드 Texture Sample 노드 UV에 연결 Multiply 노드 생성 후 A: Texture Sample, B: 10, 출력: 839 00:45:00.563 --> 00:45:01.083 World Position Offset Multiply 노드 생성 후 A: Fresnel, B: 2, 출력: Lerp Alpha 840 00:45:01.083 --> 00:45:01.667 Dynamic Parameter 생성 후: R(FresnelPower, 1.2), G(WorldOffsetVal, 5), B(Noise, 2), A(Speed, 0.5) 841 00:45:01.667 --> 00:45:02.417 나이아가라 연동 Mesh Renderer의 Enable Material Override 활성화 842 00:45:02.417 --> 00:45:03.117 Override Materials 추가 > Index [0] Explicit Mat에 M_ExplosionFX 추가 843 00:45:03.117 --> 00:45:03.867 Dynamic Material Parameter 모듈 추가 후 844 00:45:03.867 --> 00:45:04.593 R(FresnelPower, 1.2), G(WorldOffsetVal, 10), B(Noise, 2), A(Speed, 0.5) 845 00:45:04.593 --> 00:45:05.443 파티클 컬러 연동 Blend Mode: Masked Particle Color 노드 생성 후 Lerp A에 연결 846 00:45:05.443 --> 00:45:06.143 Particle Color A는 Fresnel Multiply 결과와 Add 후 Opacity Mask에 연결 Scale Color 모듈 추가 (R: 8, G: 1, B: 0.2) 847 00:45:06.143 --> 00:45:06.887 Scale Alpha: Float from Curve (0 : 1, 1 : -2) 848 00:45:06.887 --> 00:45:07.687 폭발 연기 및 스파크 효과 연출 FireSmoke SingleLoopingParticle 복사 후 FireSmoke로 이름 변경 849 00:45:07.687 --> 00:45:08.587 Spawn Burst: 50, Sprite Size Mode: Uniform/10, Mesh Attributes: Unset 850 00:45:08.587 --> 00:45:09.437 ShapeLocation 추가 후 Shape Primitive: Torus, Large Radius: 200, Handle Radius: 25 851 00:45:09.437 --> 00:45:10.237 Add Velocity 추가 후 Velocity Mode: From Point, Velocity Speed: 600 852 00:45:10.237 --> 00:45:11.087 Emitter Properties: Requires Persistent ID 활성화 853 00:45:11.087 --> 00:45:11.976 Generate Location Event 모듈 추가 854 00:45:11.976 --> 00:45:12.476 Sub FireSmoke FireSmoke 복사 Stage에 Event Handler 추가 후 Spawn Burst 비활성화 855 00:45:12.476 --> 00:45:12.976 Event Handler Properties의 Spawn Number: 10 Receive Location Event 추가 856 00:45:12.976 --> 00:45:13.476 SpriteRenderer Material: M_Smoke_subUV, SubUV: (8, 8) Sub UV Animation 추가 857 00:45:13.476 --> 00:45:13.976 SpriteRenderer 항목에 SpriteRenderer 추가 858 00:45:13.976 --> 00:45:14.476 ScaleColor의 Scale RGB: (0 : 1) / (1 : -1), Scale Curve: (8, 1, 0.2), Scale Alpha: (0 : 1) / (1 : 0) 859 00:45:14.476 --> 00:45:14.976 Scale Sprite Size Mode: Uniform, Uniform Curve Sprite Scale: (0 : 0.3) / (1 : 1), 860 00:45:14.976 --> 00:45:15.476 Uniform Curve Scale: 10 Spark (OmnidirectionBurst) 861 00:45:15.476 --> 00:45:15.976 Add Velocity의 Velocity Speed: Min 1200 / Max 1600, Origin Offset: (0, 0, 0) 862 00:45:15.976 --> 00:45:16.866 Collision 모듈 추가