1 00:00:23.970 --> 00:00:26.450 안녕하세요 이영훈 입니다 2 00:00:26.450 --> 00:00:30.320 이번 시간에 알아볼 내용은 게임오버 처리 입니다 3 00:00:30.320 --> 00:00:34.220 이번 단원에서는 플레이어의 체력을 구현하고 4 00:00:34.220 --> 00:00:37.720 체력이 0이 되면 게임오버 위젯을 5 00:00:37.720 --> 00:00:41.099 화면에 출력하는 방법에 대해 학습하겠습니다 6 00:00:41.099 --> 00:00:44.749 그리고 게임오버 위젯의 버튼 이벤트를 7 00:00:44.749 --> 00:00:47.640 처리하는 방법에 대해 학습하겠습니다 8 00:00:47.661 --> 00:00:51.561 플레이어 체력 관리와 피격 이벤트 처리 9 00:00:51.740 --> 00:00:54.890 게임오버 처리를 위해서는 플레이어 체력을 만들고 10 00:00:54.890 --> 00:00:59.190 그리고 적이 플레이어를 공격하고 체력이 줄어든 다음에 11 00:00:59.190 --> 00:01:04.260 체력이 0이 되면 게임오버 UI가 나오는 형태로 구현하면 될 것 같습니다 12 00:01:04.260 --> 00:01:08.360 자 그래서 먼저 플레이어 체력을 만들어 줄 건데요 13 00:01:08.360 --> 00:01:14.469 플레이어의 헤더 파일로 가서 여기에 체력이라는 변수를 만들겠습니다 14 00:01:14.469 --> 00:01:19.379 int 32로 해주고요, HP라고 할게요 15 00:01:19.379 --> 00:01:22.400 그리고 체력은 최대 체력도 있어야 겠죠 16 00:01:22.400 --> 00:01:30.500 그래서 int 32, MaxHP 3으로 하겠습니다 17 00:01:30.500 --> 00:01:35.260 체력은 MaxHP로 초기화를 해 주도록 하겠습니다 18 00:01:35.260 --> 00:01:39.049 이 두 녀석은 유프로퍼티 속성을 줄게요 19 00:01:45.099 --> 00:01:48.099 이렇게 만들어 주시고요 20 00:01:48.099 --> 00:01:51.580 그 다음에 UI 작업을 먼저 해 볼까요 21 00:01:51.580 --> 00:01:54.980 여기다가 체력 UI를 만들도록 하겠습니다 22 00:01:54.980 --> 00:01:59.380 위젯 블루프린트로 유저 위젯을 상속받기 한 후 23 00:01:59.380 --> 00:02:04.419 WBP 플레이어 HP라고 하겠습니다 24 00:02:04.419 --> 00:02:10.020 플레이어 HP를 열어서 여기에 캔버스를 하나 만들고요 25 00:02:10.020 --> 00:02:14.660 그리고 좌측 상단 여기에 UI를 그릴 거거든요 26 00:02:14.660 --> 00:02:19.619 UI는 일단 프로그레스 바로 할 겁니다 27 00:02:19.619 --> 00:02:21.699 이렇게 배치를 하고요 28 00:02:21.699 --> 00:02:24.660 그리고 HP라고 표현해 줄게요 29 00:02:24.660 --> 00:02:31.460 텍스트를 이렇게 넣어서 '너는 HP야'라고 표현해 보겠습니다 30 00:02:31.460 --> 00:02:34.500 크기를 한 50 정도로 키우고요 31 00:02:34.500 --> 00:02:38.000 이거는 사이즈 투 콘텐트를 체크해서 32 00:02:38.000 --> 00:02:42.179 레터 박스가 딱 맞게 구성을 하도록 하겠습니다 33 00:02:42.179 --> 00:02:46.300 자 그리고 프로그레스 바를 그냥 이렇게 구현해도 되는데 34 00:02:46.300 --> 00:02:50.340 우리가 보통 게임 같은데 보면은 이렇게 구성을 많이 하죠 35 00:02:50.340 --> 00:02:53.740 이렇게 체력 바가 있으면은 36 00:02:53.740 --> 00:02:56.240 예를 들어 이 정도 지금 빨간색으로 채워져 있어요 37 00:02:56.240 --> 00:02:58.139 여기는 이제 백그라운드고 38 00:02:58.139 --> 00:03:01.820 자 그런데 데미지를 입어서 이만큼 줄일 겁니다 39 00:03:01.820 --> 00:03:06.460 자 그러면 이제 색깔을 3단계로 표현을 할 수도 있잖아요 40 00:03:06.460 --> 00:03:10.020 예를 들어서 이제 이거는 빨간색인데 41 00:03:10.020 --> 00:03:12.619 자 여기는 이제 빨간색으로 이렇게 칠하고 42 00:03:12.619 --> 00:03:15.259 여기는 검은색 같은 거라고 해보죠 43 00:03:15.259 --> 00:03:16.779 이렇게 검은색이고 44 00:03:16.779 --> 00:03:20.179 그럼 흰색으로 이렇게 색깔을 칠한 다음에 45 00:03:20.179 --> 00:03:26.310 이 흰색 부분이 이렇게 해가지고 46 00:03:28.660 --> 00:03:30.699 자 여기 있는 녀석이 이렇게 줄어드는 거죠 47 00:03:30.699 --> 00:03:34.699 쑝 줄어들어서 탁 이렇게 맞는 48 00:03:34.699 --> 00:03:36.339 네 이러한 연출 있잖아요 49 00:03:36.339 --> 00:03:39.100 이렇게 제가 표현을 잘 하고 있는지 모르겠는데 50 00:03:39.100 --> 00:03:41.979 자 이렇게 해서 탁 이렇게 줄어드는 개념이죠 51 00:03:41.979 --> 00:03:45.339 그러면은 데미지를 입을 때마다 먼저 빨간색이 줄어들고 52 00:03:45.339 --> 00:03:49.500 흰색이 쭉 따라와서 탁 닿는 그런 식의 어떤 연출 53 00:03:49.500 --> 00:03:52.139 그런 걸 많이 하거든요 54 00:03:52.139 --> 00:03:55.489 자 그래서 간단하게 한번 만들어 보도록 할게요 이런 식으로 55 00:03:55.489 --> 00:03:58.829 자 그러면 체력 게이지를 처리를 할 건데 56 00:03:58.829 --> 00:04:01.100 근데 3개의 색깔을 칠하려면 57 00:04:01.100 --> 00:04:05.059 이게 이 프로그래스바는 2개 거든요 58 00:04:05.059 --> 00:04:07.460 자 보시면은 여기 스타일이라고 있는데 59 00:04:07.460 --> 00:04:10.740 펼쳐보시면은 백그라운드와 그 다음에 필 이미지 60 00:04:10.740 --> 00:04:13.940 2개 이미지로 이렇게 되어 있습니다 61 00:04:13.940 --> 00:04:16.420 자 이렇게 보통 2개로 배치가 되어 있고요 62 00:04:16.420 --> 00:04:18.739 자 그래서 이거를 퍼센트를 이렇게 올려 보면은 63 00:04:18.739 --> 00:04:20.579 이렇게 칠해지는 개념입니다 64 00:04:20.579 --> 00:04:24.940 자 그래서 이거를 하나 더 만들어서 겹쳐놓을게요 65 00:04:24.940 --> 00:04:27.339 자 그러면은 이거를 겹칠 건데 66 00:04:27.339 --> 00:04:32.260 겹치려면은 여기 보면은 패널 중에 오버레이라는 녀석이 있는데요 67 00:04:32.260 --> 00:04:34.859 자 이걸 이용하면 좀 간단하게 할 수가 있어요 68 00:04:34.859 --> 00:04:36.660 자 오버레이를 하나 넣은 다음에 69 00:04:36.660 --> 00:04:40.140 거기에 이 프로그래스바를 이렇게 넣어줍니다 70 00:04:40.140 --> 00:04:42.739 자 그러면은 사이즈가 좀 안맞죠 71 00:04:42.739 --> 00:04:45.420 그래서 이거를 이렇게 잠깐 펼치고요 72 00:04:45.420 --> 00:04:49.059 자 프로그래스바는 여기 오버레이 안에 꽉 채우도록 할게요 73 00:04:49.059 --> 00:04:52.420 상단에 보시면 여기 채우는 메뉴가 있는데 74 00:04:52.420 --> 00:04:55.739 2개를 이렇게 눌러서 꽉 채우도록 하겠습니다 75 00:04:55.739 --> 00:04:58.170 자 오버레이를 이렇게 해주고요 76 00:05:03.820 --> 00:05:06.170 조금 더 길게 할까요 77 00:05:07.700 --> 00:05:09.980 자 그리고 여기서 프로그래스바를 하나 더 78 00:05:09.980 --> 00:05:13.140 Ctrl-D 눌러서 복제를 해서 겹쳐놓겠습니다 79 00:05:13.140 --> 00:05:18.100 자 그 다음에 이거는 이제 앞쪽에 있는 프로그래스바고요 80 00:05:18.100 --> 00:05:19.739 이거는 뒤쪽에 있는 거예요 81 00:05:19.739 --> 00:05:22.980 그럼 앞쪽에도 이 백그라운드 이미지를 가지고 있거든요 82 00:05:22.980 --> 00:05:25.619 자 그래서 앞쪽에 있는 녀석은 83 00:05:25.619 --> 00:05:28.540 백그라운드 컬러를 투명으로 해버리겠습니다 84 00:05:28.540 --> 00:05:33.940 그래서 여기서 이 색을 이렇게 알파 값을 0으로 빼겠습니다 85 00:05:33.940 --> 00:05:37.899 자 그리고 여기 백그라운드 뒤에 있는 거 86 00:05:37.899 --> 00:05:40.899 여기에 백그라운드 색을 좀 다른 색으로 해볼게요 87 00:05:40.899 --> 00:05:43.100 좀 어두운 계열로 할 거고요 88 00:05:43.100 --> 00:05:45.380 이런 느낌으로 89 00:05:45.380 --> 00:05:49.420 어두운 회색 톤으로 이렇게 처리를 할게요 90 00:05:49.420 --> 00:05:54.380 자 그리고 이거는 퍼센티지를 조금 더 올려보면 이렇게 되죠 91 00:05:54.380 --> 00:05:57.779 자 지금 앞에 전경색이 똑같아서 그런데 92 00:05:57.779 --> 00:05:59.779 이 색깔을 좀 바꿔볼게요 93 00:05:59.779 --> 00:06:03.579 =뒤쪽에 있는 색은 이거를 흰색으로 하겠습니다 94 00:06:03.579 --> 00:06:05.140 자 이렇게 하면 흰색이 되죠 95 00:06:05.140 --> 00:06:09.660 그리고 체력은 저는 이제 앞쪽에 있는 프로그래스바의 색깔은 96 00:06:09.660 --> 00:06:14.459 붉은색 계열로 해서 체력을 표현해 보도록 할게요 97 00:06:14.459 --> 00:06:18.140 자 이렇게 3가지 3단계 색을 표현해 보도록 할 거고요 98 00:06:18.140 --> 00:06:23.820 그래서 이 흰색이 이 빨간색 끝선에 쭉 맞게 쭉 따라오는 형태로 99 00:06:23.820 --> 00:06:25.779 이렇게 구현해 보도록 하겠습니다 100 00:06:25.779 --> 00:06:30.100 자 그러면 이거를 처리하기 위해서는 코딩을 해야 되는데요 101 00:06:30.100 --> 00:06:33.579 지금 유저 위젯이니까 우리 위젯을 하나 만들어서 102 00:06:33.579 --> 00:06:38.079 이 블루프린트 위젯의 붐으로 상속받게 한 후에 103 00:06:38.079 --> 00:06:39.619 처리를 해 보도록 할게요 104 00:06:39.619 --> 00:06:43.420 자 그러면 이거 이름을 이거는 바니까요 105 00:06:43.420 --> 00:06:46.779 HP바니까 이거는 백이고요 106 00:06:46.779 --> 00:06:50.100 그 다음에 이거는 HP바라고 하겠습니다 107 00:06:50.100 --> 00:06:52.380 이렇게 구성을 해 줄게요 108 00:06:52.380 --> 00:06:54.700 컴파일하고 세이브 해 주시고요 109 00:06:54.700 --> 00:06:58.380 그러면은 클래스를 하나 만들게요 110 00:06:58.380 --> 00:07:00.179 C++ 클래스를 만들 거고요 111 00:07:00.179 --> 00:07:05.899 올 클래스스를 선택한 후에 유저 위젯 112 00:07:05.899 --> 00:07:10.059 이렇게 상속받게 하겠습니다 113 00:07:10.059 --> 00:07:13.820 자 이거는 플레이어의 HP UI니까요 114 00:07:13.820 --> 00:07:16.379 자 이렇게 구성을 해 줄게요 115 00:07:25.579 --> 00:07:26.859 자 여기죠 116 00:07:26.859 --> 00:07:33.660 플레이어의 HP UI의 퍼블릭이라고 만들어 주시고 117 00:07:33.660 --> 00:07:35.660 그 다음에 여기에서 하고 싶은거는 118 00:07:35.660 --> 00:07:39.140 일단 저 프로그레스 바, 바죠 119 00:07:39.140 --> 00:07:44.179 바 두개를 일단 바인드를 하고 싶어요 120 00:07:44.179 --> 00:07:47.819 자 그래서 유 프로퍼티 121 00:07:52.019 --> 00:07:55.220 에디트 애니웨어 한 다음에 메타 라고 하시고 122 00:07:55.220 --> 00:07:57.299 그 다음에 괄호를 꼭 하신 다음에 123 00:07:57.299 --> 00:08:01.899 이 안에다가 바인드 위젯이라고 작성을 합니다 124 00:08:01.899 --> 00:08:03.420 자 클래스라고 하고요 125 00:08:03.420 --> 00:08:06.420 저 녀석은 유 프로그래스바 이거든요 126 00:08:06.420 --> 00:08:10.100 여기 보시면은 저 UI의 이름은 127 00:08:10.100 --> 00:08:10.980 저 위젯이죠 128 00:08:10.980 --> 00:08:14.059 위젯의 이름은 프로그레스 바 라고 되어있습니다 129 00:08:14.059 --> 00:08:16.739 자 이걸 클릭해 보시면은 더 확실하게 알 수 있죠 130 00:08:16.739 --> 00:08:20.380 자 이렇게 유 프로그래스 바 라고 되어있습니다 131 00:08:20.380 --> 00:08:23.779 자 이거를 여기다가 선언을 해 줄게요 132 00:08:23.779 --> 00:08:28.579 자 이렇게 해서 HPBar Back 이라고 하나 만들었고요 133 00:08:28.579 --> 00:08:34.539 그 다음에 복사해 가지고 HP바라고 하겠습니다 134 00:08:34.539 --> 00:08:37.820 여기 있는 이름과 동일하게 해 주시면 되겠죠 135 00:08:37.820 --> 00:08:41.859 그리고 여기다가 두 개의 함수를 구성을 할 건데 136 00:08:41.859 --> 00:08:46.739 하나는 틱 함수를 하나 만들 거에요 137 00:08:46.739 --> 00:08:49.859 자 그래서 틱이 하나 있어야 되고요 138 00:08:49.859 --> 00:08:55.299 그리고 체력 정보를 얻어서 139 00:08:55.299 --> 00:08:59.700 그거를 이 프로그래스 Bar UI로 표현을 해야겠죠 140 00:08:59.700 --> 00:09:05.059 자 그러니까 그 정보를 세팅할 SetHP라는 141 00:09:05.059 --> 00:09:07.639 함수를 이렇게 구성을 해 줄게요 142 00:09:07.639 --> 00:09:14.909 자 틱은요, 여기 보면 버추얼 보이드 네이티브 틱 이라는 게 있습니다 143 00:09:17.059 --> 00:09:18.419 이런 함수가 있고요 144 00:09:18.419 --> 00:09:22.260 여기 탭 누르면은 이렇게 구성이 되죠 145 00:09:22.260 --> 00:09:24.179 자 이걸 잘 못 찾으시겠으면은 146 00:09:24.179 --> 00:09:28.780 그대로 여기 유저 위젯 으로 컨트롤 누르고 클릭하신 다음에 147 00:09:28.780 --> 00:09:33.140 여기 가서 네이티브 틱 을 검색을 해보시면 이렇게 있으니까요 148 00:09:33.140 --> 00:09:35.739 이것을 그대로 복제해서 149 00:09:35.739 --> 00:09:39.979 들어오신 후에 여기다 이렇게 작성해 주셔도 되겠습니다 150 00:09:39.979 --> 00:09:44.709 이렇게 작성하시고 뒤에는 오버라이드라고 써주시면 되겠죠 151 00:09:46.859 --> 00:09:49.340 그리고 함수도 만들게요 152 00:09:49.340 --> 00:09:56.239 함수는 SetHP니까요, 보이드 SetHP라는 함수를 만들 거고요 153 00:09:57.739 --> 00:10:00.739 그리고 여기에는 두 개의 정보를 받을 거에요 154 00:10:00.739 --> 00:10:05.580 여기에서 int 32로 현재 HP를 받을 거고 155 00:10:05.580 --> 00:10:08.859 int 32로 MaxHP를 받겠습니다 156 00:10:08.859 --> 00:10:11.979 왜 두 개를 받는 이유는 퍼센티지를 만들고 싶어요 157 00:10:11.979 --> 00:10:16.059 여기 이 프로그래스바 는 퍼센티지를 넣어야 되거든요 158 00:10:16.059 --> 00:10:21.500 그래서 현재 값과 최대 값 두 개를 받으면 퍼센트를 만들 수 있잖아요 159 00:10:21.500 --> 00:10:25.140 자 그래서 이렇게 두 개의 함수를 구성을 했구요 160 00:10:26.340 --> 00:10:29.579 자 구현을 해 주겠습니다 161 00:10:31.979 --> 00:10:36.940 자 먼저 SetHP는 일단 HP바를 설정할 거에요 162 00:10:36.940 --> 00:10:43.020 백이 아니고 HP바를 이것에 셋퍼센트를 해주도록 할 건데요 163 00:10:43.020 --> 00:10:50.900 자 그러면 float per는 curHP 나누기 maxHP 하면 되죠 164 00:10:50.900 --> 00:10:53.500 자 근데 문제는 이게 둘 다 integer이기 때문에 165 00:10:53.500 --> 00:10:57.219 그래서 정수 나누기 정수는 소수점을 버림하거든요 166 00:10:57.219 --> 00:11:01.900 자 그러니까 예를 들어서 뭐 0.5 그리고 1 이다 167 00:11:01.900 --> 00:11:04.500 아니면 뭐 이게 int죠 168 00:11:04.500 --> 00:11:07.900 10 이게 5, 10이다 그러면은 169 00:11:07.900 --> 00:11:10.059 10을 5로 나누면 0.5 잖아요 170 00:11:10.059 --> 00:11:12.900 그런데 int로 나눠 버리면 0이 되어버리거든요 171 00:11:12.900 --> 00:11:17.580 그래서 이것을 하나라도 플로트로 이렇게 / 캐스팅을 해 주시면 172 00:11:17.580 --> 00:11:20.099 결과가 플로트로 이렇게 나오게 됩니다 173 00:11:20.099 --> 00:11:24.659 그래서 이렇게 구성을 하고 여기다가 퍼센트를 넣어 주도록 할게요 174 00:11:24.659 --> 00:11:27.140 이걸 사용하려면 헤더를 추가를 해야겠죠 175 00:11:27.140 --> 00:11:32.440 이렇게 인클루드 프로그래스바라는 헤더를 이렇게 추가하겠습니다 176 00:11:32.464 --> 00:11:38.314 ProgressBar 헤더 추가 177 00:11:38.340 --> 00:11:39.940 자 이렇게 작성을 해주고요 178 00:11:39.940 --> 00:11:44.020 그 다음에 네이티브틱에서는 HP 100 있죠 179 00:11:44.020 --> 00:11:46.140 HP바의 백이 있는데요 180 00:11:46.140 --> 00:11:47.900 이 백의 색을 흰색이잖아요 181 00:11:47.900 --> 00:11:53.099 흰색이 HP바의 퍼센트를 쭉 따라오게 만들고 싶어요 182 00:11:53.099 --> 00:11:56.820 자 이것을 처리하기 위해서 우리가 또 공식을 하나 알 필요가 있는데 183 00:11:56.820 --> 00:12:01.979 굉장히 많이 사용되는 공식 중에 linear interpolation 이라는 게 있습니다 184 00:12:01.979 --> 00:12:04.829 그게 뭐냐면 선형보간 이라고 해요 185 00:12:07.020 --> 00:12:13.419 linear interpolation이라고 하는데 줄여서 '럽'이라고 얘기를 합니다 186 00:12:13.419 --> 00:12:16.099 들어보신 분도 있고 처음 듣는 분도 있을텐데 187 00:12:16.099 --> 00:12:18.749 자 이거는요 간단하게 말하면 188 00:12:18.749 --> 00:12:20.859 이렇게 매개변수를 3개를 받아요 189 00:12:20.859 --> 00:12:26.609 a, b, t 혹은 알파 이렇게 얘기를 하는데 190 00:12:26.609 --> 00:12:28.700 이렇게 3개의 값을 받거든요 191 00:12:28.700 --> 00:12:31.780 자 a는 시작이고 b는 끝이라고 보시면 돼요 192 00:12:31.780 --> 00:12:35.059 그 t는 0에서 1 사이 값을 갖습니다 193 00:12:35.059 --> 00:12:39.219 예를 들어서 이걸 선이라고 한다면 이런 선이 있겠죠 194 00:12:39.219 --> 00:12:42.179 자 여기서부터 이렇게 선이 있어요 195 00:12:44.179 --> 00:12:48.659 자 이렇게 생긴 선이 있는데 여기가 a고 여기가 b라는 거죠 196 00:12:48.659 --> 00:12:51.059 자 그러면 여기 끝에 있는 t는 뭐냐면 197 00:12:51.059 --> 00:12:56.539 이건 플루트 타입인데 0에서 1 사이 값을 가지는 그러한 값입니다 198 00:12:56.539 --> 00:13:01.500 예를 들어서 이걸 0이라고 한다면 t를 그러면 a를 반환하게 돼요 199 00:13:01.500 --> 00:13:05.820 자 a 자체를 반환하고 1이라면 b를 반환하고 200 00:13:05.820 --> 00:13:11.700 0.5라면 a와 b의 중간 지점 여기를 반환하는 그런 개념입니다 201 00:13:11.700 --> 00:13:13.979 그래서 보간하는 거예요 202 00:13:13.979 --> 00:13:15.979 자 선형보간 이라고 하고요 203 00:13:15.979 --> 00:13:19.460 자 그러면 이렇게 사용을 t를 움직이는 방법이 하나 있고 204 00:13:19.460 --> 00:13:22.140 럽를 사용할 때는 이렇게 하는 방법도 있습니다 205 00:13:22.140 --> 00:13:26.900 자 이렇게 했을 때 이렇게 할 수가 있어요 206 00:13:26.900 --> 00:13:30.859 자 원래는 a, b 한 다음에 이걸 받아서 어떤 값을 쓰면 되는데 207 00:13:30.859 --> 00:13:33.820 이거를 다시 a에다 덮어 쓰고요 208 00:13:33.820 --> 00:13:38.219 이 t 값을 이렇게 조정하는 것이 아니라 t 는 조정하지 않고 209 00:13:38.219 --> 00:13:42.099 0.1 이런 식으로 딱 고정해 놓는 거죠 210 00:13:42.099 --> 00:13:46.020 자 그럼 어떻게 되냐면 처음에 럽이 한번 호출되잖아요 211 00:13:46.020 --> 00:13:50.219 그러면 a와 b의 10퍼센트의 위치인 한 이 정도 되겠죠 212 00:13:50.219 --> 00:13:53.140 여기에 a를 새로 갖다 놓습니다 213 00:13:53.140 --> 00:13:55.340 자 a의 위치가 움직이는 거죠 214 00:13:55.340 --> 00:13:59.219 자 그 다음에 한번 또 호출하면은 여기에서부터 여기까지 10퍼센트 215 00:13:59.219 --> 00:14:00.900 한 이 정도 되겠죠 216 00:14:00.900 --> 00:14:03.219 자 여기다가 a를 갖다 놓습니다 217 00:14:03.219 --> 00:14:05.059 이걸 계속 반복하는 거예요 218 00:14:05.059 --> 00:14:08.580 그러면은 이렇게 또 계속 이쪽으로 진행을 하겠죠 219 00:14:08.580 --> 00:14:10.380 예를 들어 여기까지 왔어요 220 00:14:10.380 --> 00:14:14.940 그러면은 여기서 여기까지 10퍼센트만 이 정도 되겠죠 221 00:14:14.940 --> 00:14:18.179 처음에는 이렇게 구간이 큰데 222 00:14:18.179 --> 00:14:22.979 b에 수렴할수록, b에 가까워질수록 굉장히 작아진다 라고 생각하시면 돼요 223 00:14:22.979 --> 00:14:28.140 그래서 그 움직임이 슝 하고 천천히 도달하는 거죠 224 00:14:28.140 --> 00:14:32.140 처음에 크게 움직이다가 도착 위치에서는 굉장히 작게 움직이는 225 00:14:32.140 --> 00:14:35.580 그러한 어떤 형태를 우리가 구현할 수가 있는데 226 00:14:35.580 --> 00:14:39.200 이걸 한번 사용해서 저기 있는 227 00:14:39.250 --> 00:14:41.350 지금 하려는 게 이거잖아요 그렇죠? 228 00:14:41.350 --> 00:14:44.739 그래서 이렇게 있는데 229 00:14:44.739 --> 00:14:45.820 이렇게 여기잖아요 230 00:14:45.820 --> 00:14:47.900 여기가 이쪽으로 슝 오는데 231 00:14:47.900 --> 00:14:51.399 슝 해서 슝 탁 도착하는 232 00:14:51.419 --> 00:14:54.900 그러한 어떤 연출을 한번 해보려고 하는 거예요 233 00:14:54.900 --> 00:14:56.140 한번 해볼게요 234 00:14:56.140 --> 00:15:01.219 그러면 일단 럽 이라는 걸 사용할 건데 235 00:15:01.219 --> 00:15:04.219 이거는 플로트 타입으로 하고 있어요 236 00:15:04.219 --> 00:15:06.380 이 값이 플로트니까 237 00:15:06.380 --> 00:15:13.099 Fmath에 보면 럽 이라고 있습니다 238 00:15:13.099 --> 00:15:14.580 자 럽 이라는 함수가 있구요 239 00:15:14.580 --> 00:15:16.219 자 이걸 이용해서 처리를 할 수 있고 240 00:15:16.219 --> 00:15:20.340 여기에는 a, b 그리고 알파 이렇게 들어갑니다 241 00:15:20.340 --> 00:15:22.460 자 그럼 저는 알파를 고정한다고 했어요 242 00:15:22.460 --> 00:15:25.700 저는 0.1 이렇게 고정하고 싶은데 243 00:15:25.700 --> 00:15:29.059 이렇게 하는 것보다는 이것도 움직임이니까요 244 00:15:29.059 --> 00:15:31.900 이 델타 타임을 이용해서 제어를 할까 해요 245 00:15:31.900 --> 00:15:36.140 그러면 0.1 이라는 것은 실제로는 10분의 1 이잖아요 246 00:15:36.140 --> 00:15:36.859 그쵸? 247 00:15:36.859 --> 00:15:41.609 그러면은 보통 우리가 60분의 1 이거든요 248 00:15:41.609 --> 00:15:42.780 델타 타임이? 249 00:15:42.780 --> 00:15:46.340 자 여기다가 곱하기 6 하면 60분의 6 이렇게 되니까 250 00:15:46.340 --> 00:15:47.979 이게 10분의 1이 되겠죠 251 00:15:47.979 --> 00:15:53.580 그러니까 델타 타임에다가 곱하기 6 하면은 252 00:15:53.580 --> 00:15:55.820 대략적으로 10분의 1 정도 됩니다 253 00:15:55.820 --> 00:15:57.940 자 이렇게 해주고요 254 00:15:57.940 --> 00:16:00.260 그 다음에 a와 b를 넣어야 될 텐데 255 00:16:00.260 --> 00:16:04.850 자 a는 플로트 a 라고 할까요 256 00:16:08.500 --> 00:16:11.979 자 이거는 현재 값이죠, 현재 값 257 00:16:11.979 --> 00:16:13.859 현재 값은 이 백에 있는 값이에요 258 00:16:13.859 --> 00:16:17.500 그래서 겟 퍼센트해서 가져오고요 259 00:16:17.500 --> 00:16:19.739 그리고 목표 값은 이거죠 260 00:16:19.739 --> 00:16:27.549 HP바의 플로트 b는 HP바의 겟 퍼센트가 됩니다 261 00:16:28.299 --> 00:16:31.920 자 그럼 a, b 이렇게 넣으면 되겠죠 262 00:16:33.020 --> 00:16:36.570 자 이거를 다시 a에다 담을 거에요 263 00:16:37.820 --> 00:16:41.299 자 그리고 이 a 값을 다시 264 00:16:41.299 --> 00:16:45.739 이 HB100의 퍼센트 값으로 다시 돌려서 넣어 주겠습니다 265 00:16:45.739 --> 00:16:49.380 이렇게 셋 퍼센트 이렇게 해서 266 00:16:49.380 --> 00:16:52.059 a를 다시 넣어 주도록 할게요 267 00:16:52.059 --> 00:16:54.539 자 이렇게 하면은 보간한 다음에 268 00:16:54.539 --> 00:16:56.020 그 값을 받은 다음에 269 00:16:56.020 --> 00:16:58.820 이 값을 다시 여기다 반영하는 거죠 270 00:16:58.820 --> 00:17:03.299 자 이렇게 선형 보간을 이용해서 이런 처리를 할 수가 있습니다 271 00:17:03.299 --> 00:17:06.180 그럼 이렇게 진행을 하고요 272 00:17:06.180 --> 00:17:09.900 그럼 이 UI를 화면에 나오게 해야겠죠 273 00:17:09.900 --> 00:17:12.140 그래서 플레이어로 가서 274 00:17:12.140 --> 00:17:17.099 플레이어의 UI를 붙이는 행위를 하도록 하겠습니다 275 00:17:17.099 --> 00:17:25.300 여기다가 유 프로퍼티 에디트 애니웨어 해주시고요 276 00:17:25.300 --> 00:17:28.900 그 다음에 T 서브 클래스 오브로 277 00:17:28.900 --> 00:17:32.400 클래스 유 유저 위젯 278 00:17:35.900 --> 00:17:39.260 자 여기는 플레이어의 HPUI죠 279 00:17:39.260 --> 00:17:42.699 HPUI 팩토리라고 하겠습니다 280 00:17:42.699 --> 00:17:45.500 그럼 이거를 만들어서 계속 사용해야 되니까요 281 00:17:45.500 --> 00:17:48.660 이거를 클래스 하고요 282 00:17:48.660 --> 00:17:52.819 우리가 만들었던 UI 이름이 플레이어 HPUI거든요 283 00:17:52.819 --> 00:17:58.500 유 플레이어 HPUI 이렇게 되겠죠 284 00:17:58.500 --> 00:18:02.260 여기 포인터로 HPUI라고 하겠습니다 285 00:18:02.260 --> 00:18:03.540 이렇게 구성을 해 주고요 286 00:18:03.540 --> 00:18:06.339 이걸 만들어서 붙여서 가지고 있으면 되겠죠 287 00:18:06.339 --> 00:18:09.780 자 그러면 플레이어의 비긴플레이로 가서 288 00:18:09.780 --> 00:18:12.099 이곳에서 작업을 해 줄게요 289 00:18:12.099 --> 00:18:15.060 제일 여기 플레이어 컨트롤러를 가져와서 290 00:18:15.060 --> 00:18:18.300 처리한 곳 바로 밑에다가 해 주도록 할게요 291 00:18:18.300 --> 00:18:21.289 여기 크리에이트 위젯을 하고요 292 00:18:25.939 --> 00:18:27.959 자 이렇게 하고 293 00:18:31.459 --> 00:18:35.020 HPUI 팩토리를 넣어줍니다 이렇게 294 00:18:35.020 --> 00:18:36.819 자 그럼 이거를 얘가 받아야겠죠 295 00:18:36.819 --> 00:18:39.420 HPUI 받아주고요 296 00:18:39.420 --> 00:18:43.819 캐스팅해서 가지고 있겠습니다 297 00:18:43.819 --> 00:18:48.660 유 플레이어 HPUI 이렇게 캐스팅해서 가지고 있을게요 298 00:18:48.660 --> 00:18:52.579 이걸 가지고 있으려면 헤더 추가를 이렇게 해 줘야겠죠 299 00:18:52.579 --> 00:18:56.209 상단에 헤더를 이렇게 추가를 해 주도록 하겠습니다 300 00:19:02.859 --> 00:19:04.699 그리고 화면을 일단 붙일게요 301 00:19:04.699 --> 00:19:09.579 이렇게 해서 에드 투 뷰포트 이렇게 붙여주고요 302 00:19:09.579 --> 00:19:15.060 자 그 다음에 HPUI에 SetHP 해서 303 00:19:15.060 --> 00:19:19.780 체력과, 현재 체력과 맥스 체력을 넣어 주도록 할게요 304 00:19:19.780 --> 00:19:23.900 하는 김에 현재 체력에도 맥스를 305 00:19:23.900 --> 00:19:27.180 초기화해 주는 일도 여기서 해 주도록 할게요 306 00:19:27.180 --> 00:19:31.099 그러면 이제 언리얼로 와서 307 00:19:31.099 --> 00:19:34.900 플레이어한테 체력 게이지를 넣어 주고요 308 00:19:34.900 --> 00:19:37.200 컴파일 한 다음에 309 00:19:38.500 --> 00:19:39.500 자 그러면 여기 있죠 310 00:19:39.500 --> 00:19:45.500 여기다가 WVP 플레이어 HP 이렇게 넣어 주도록 할게요 311 00:19:45.500 --> 00:19:49.660 자 컴파일 하고 실행해 볼까요 312 00:19:49.660 --> 00:19:51.739 오류가 났는데요 313 00:19:51.739 --> 00:19:54.020 85라인에서 오류가 났습니다 314 00:19:54.020 --> 00:19:59.579 플레이어 85라인이면은 여기인데요 315 00:19:59.579 --> 00:20:02.140 이게 제대로 만들어지지 못했다고 이렇게 나오네요 316 00:20:02.140 --> 00:20:04.699 다시 한번 껐다가 다시 한번 해 볼게요 317 00:20:04.699 --> 00:20:06.819 자 컴파일 하고요 318 00:20:09.219 --> 00:20:12.099 여기를 런타임 디버깅 해서 볼게요 319 00:20:12.099 --> 00:20:13.819 자 실행합니다 320 00:20:13.819 --> 00:20:16.239 F5로 실행했어요 321 00:20:22.739 --> 00:20:24.420 다시 플레이어를 열고요 322 00:20:24.420 --> 00:20:28.420 자 여기 잘 들어갔는지 확인해 볼게요 323 00:20:28.420 --> 00:20:32.099 여기에 팩토리는 잘 채워져 있거든요 324 00:20:32.099 --> 00:20:35.380 다시 한번 실행해 보겠습니다 325 00:20:35.380 --> 00:20:39.180 이쪽으로 와서 여기는 채워져 있고 326 00:20:39.180 --> 00:20:42.540 이렇게 보면 여기가 널이네요 327 00:20:42.540 --> 00:20:45.099 아 그러면 이런 경우에는 328 00:20:45.099 --> 00:20:47.969 UI의 부모를 아직 교체를 안 한 거죠 329 00:20:47.969 --> 00:20:49.939 팩토리는 존재하는데 330 00:20:49.939 --> 00:20:52.660 이렇게 캐스팅해서 실패했다는 거는 331 00:20:52.660 --> 00:20:54.819 우리가 생각해 볼 수 있는 거죠 332 00:20:54.819 --> 00:20:57.939 자 그러면 다시 한번 실행해서 333 00:21:00.339 --> 00:21:06.699 HPUI의 부모 클래스를 교체를 해 주겠습니다 334 00:21:06.699 --> 00:21:10.660 HP 플레이어, HP 이거 교체 안 했죠 335 00:21:10.660 --> 00:21:12.180 유저 위젯이니까 336 00:21:12.180 --> 00:21:17.819 자 이것을 여기서 리페어런트 블루프린트 337 00:21:17.819 --> 00:21:23.020 이렇게 해서 플레이어 HP UI 이걸로 교체를 해 줄게요 338 00:21:23.060 --> 00:21:27.060 자 그리고 바인드된 걸 보면은 잘 돼 있죠 339 00:21:27.060 --> 00:21:28.579 자 컴파일 해주고요 340 00:21:28.579 --> 00:21:33.469 다시 한번 실행해 보면 UI가 잘 나오는 걸 볼 수 있죠 341 00:21:38.619 --> 00:21:42.459 자 그리고 보면은 에너미가 공격을 계속 반복적으로 하지 않고요 342 00:21:42.459 --> 00:21:44.020 한 번만 하거든요 343 00:21:44.020 --> 00:21:48.699 이것도 뭔가 작업하다가 우리가 좀 놓친 부분이 있는 것 같습니다 344 00:21:48.699 --> 00:21:53.660 에너미 FSM으로 가서 여기를 보면은 345 00:21:53.660 --> 00:21:55.140 아 여기인 것 같아요 346 00:21:55.140 --> 00:21:57.459 공격 동작이 끝났을 때 347 00:21:57.459 --> 00:21:59.780 이거는 이제 공격을 재시도 해야 되잖아요 348 00:21:59.780 --> 00:22:03.180 근데 이거는 트루를 해 줘야지 공격을 하는 거잖아요 349 00:22:03.180 --> 00:22:05.420 폴스로 하면 더 이상 공격하지 않고 대기해라 350 00:22:05.420 --> 00:22:06.699 이런 뜻이니까요 351 00:22:06.699 --> 00:22:08.459 이제 공격을 다시 해야 되니까 352 00:22:08.459 --> 00:22:11.579 트루라고 이렇게 바꿔줘야 될 것 같습니다 353 00:22:11.579 --> 00:22:15.310 그러면 다시 컴파일 하고요 354 00:22:22.660 --> 00:22:26.660 실행해서 가까이 가볼게요 355 00:22:26.660 --> 00:22:29.140 자 이제 공격을 반복적으로 하는 걸 볼 수 있고 356 00:22:29.140 --> 00:22:33.459 도망가면 다시 쫓아오고 공격하고 357 00:22:33.459 --> 00:22:35.819 이제 정상적으로 동작을 하는 것 같습니다 358 00:22:35.819 --> 00:22:39.339 자 그러면 에너미가 플레이어한테 공격을 해야겠죠 359 00:22:39.339 --> 00:22:41.859 피격 처리를 해야 되는데 360 00:22:41.859 --> 00:22:45.300 자 그러면 주인공 쪽에다가 361 00:22:45.300 --> 00:22:49.099 피격에 대한 처리를 하는 함수를 만들어야겠죠 362 00:22:49.099 --> 00:22:56.579 그래서 여기다가 보이드 테이크 데미지라는 함수를 하나 만들어줄게요 363 00:22:56.579 --> 00:22:59.500 네 이렇게 364 00:22:59.500 --> 00:23:02.420 자 이거는 온 테이크 라고 그럴까요, 마이 온 테이크 365 00:23:02.420 --> 00:23:04.939 온 마이 테이크 이렇게 할게요 366 00:23:04.939 --> 00:23:08.459 온 마이 테이크 데미지 367 00:23:08.459 --> 00:23:11.099 자 데미지는 일단 무조건 1점만 받도록 하겠습니다 368 00:23:11.099 --> 00:23:15.560 자 이렇게 해서 구현부를 이렇게 만들어 주시고요 369 00:23:16.660 --> 00:23:22.099 그리고 이제 구현을 해야겠죠 370 00:23:22.099 --> 00:23:23.819 자 이쪽으로 와서 371 00:23:23.819 --> 00:23:31.420 일단 여기에는 체력을 1 감소하고 싶다 372 00:23:31.420 --> 00:23:37.219 자 그리고 만약에 체력이 0 이하라면 373 00:23:37.219 --> 00:23:40.780 게임오버 처리를 하고 싶다 374 00:23:40.780 --> 00:23:42.180 자 이렇게 해야 되고요 375 00:23:42.180 --> 00:23:45.939 그리고 이를 감소하면은 UI도 같이 해야겠죠 376 00:23:45.939 --> 00:23:49.619 UI에도 반영하고 싶다 377 00:23:49.619 --> 00:23:51.739 이런 일을 하고 싶습니다 378 00:23:51.739 --> 00:23:53.380 한 개씩 해볼게요 379 00:23:53.380 --> 00:23:55.140 자 체력을 일단 감소를 합시다 380 00:23:55.140 --> 00:24:00.500 체력은 HP 하나씩 감소를 시켜주고요 381 00:24:00.500 --> 00:24:05.140 UI에 반영하는 것은 이렇게 하는 거죠 382 00:24:05.140 --> 00:24:06.819 HPUI 383 00:24:06.819 --> 00:24:10.180 여기에 보면은 SetHP가 있죠 384 00:24:10.180 --> 00:24:14.739 여기다가 HP와 maxHP를 이렇게 넣어주면 될 것 같습니다 385 00:24:14.739 --> 00:24:16.420 자 그리고 if 386 00:24:16.420 --> 00:24:21.020 만약에 저 HP가 0 이하예요 387 00:24:21.020 --> 00:24:25.339 그러면 게임오버 처리를 하고 싶고요 388 00:24:25.339 --> 00:24:29.140 일단 게임오버 처리는 일단 일시정지를 할 겁니다 389 00:24:29.140 --> 00:24:33.859 그리고 UI를 만들어서 화면에 탁 출력하는 일을 할 거예요 390 00:24:33.859 --> 00:24:36.939 그래서 일시정지를 하기 위해서 이걸 처리하려면 391 00:24:36.939 --> 00:24:38.939 플레이어 컨트롤러가 있어야겠죠 392 00:24:38.939 --> 00:24:45.819 자 그래서 오토 피시는 겟월드에서 가져올게요 393 00:24:45.819 --> 00:24:53.619 여기에서 겟 퍼스트 플레이어 컨트롤러를 가져옵니다 394 00:24:53.619 --> 00:24:56.180 자 그리고 플레이어 컨트롤러를 가지고 395 00:24:56.180 --> 00:24:59.089 Set Pause를 시켜줄게요 396 00:25:03.939 --> 00:25:07.619 자 그리고 우리 슈팅 할 때도 잠깐 했었는데 397 00:25:07.619 --> 00:25:09.060 인풋모드라는 개념이 있고 398 00:25:09.060 --> 00:25:13.219 마우스 커서를 보였다 안 보였다 이렇게 제어를 할 수가 있잖아요 399 00:25:13.219 --> 00:25:15.060 자 여기에도 그게 좀 필요할 것 같아요 400 00:25:15.060 --> 00:25:19.660 게임오버 같은 경우에는 마우스가 이렇게 보여야 되니까요 401 00:25:19.660 --> 00:25:23.380 자 그래서 일단은 여기다가 처리를 해볼까요 402 00:25:23.380 --> 00:25:29.219 플레이어 컨트롤러의 Set Show Mouse Cursor에서 트루 해주고요 403 00:25:29.219 --> 00:25:34.780 그 다음에 플레이어 컨트롤러의 인풋 모드를 404 00:25:34.780 --> 00:25:40.180 셋 인풋 모드죠 405 00:25:40.180 --> 00:25:48.579 자 이거를 F 인풋 모드에 UI 온니로 이렇게 해주겠습니다 406 00:25:48.579 --> 00:25:51.979 자 그럼 반대로 처음에 게임 시작할 때는 407 00:25:51.979 --> 00:25:55.900 이걸 다 반대로 해놔야겠죠 408 00:25:55.900 --> 00:25:57.900 그리고 여기에서 이제 게임오버 처리니까 409 00:25:57.900 --> 00:26:09.260 여기에서 게임오버 UI를 생성해서 화면에 보이게 하고싶다 410 00:26:09.260 --> 00:26:11.180 자 이걸 해야 될 것 같아요 411 00:26:11.180 --> 00:26:15.939 일단은 이거를 반대로 처리하는 것도 한번 먼저 현행으로 해놓고 412 00:26:15.939 --> 00:26:17.900 이거 작업을 추가로 할게요 413 00:26:17.900 --> 00:26:21.579 자 이쪽으로 와보시면 비긴플레이가 있죠 414 00:26:21.579 --> 00:26:25.020 비긴플레이에서 이미 플레이어 컨트롤러 이렇게 가져오고 있네요 415 00:26:25.020 --> 00:26:27.900 자 여기에서 같이 처리를 해주도록 할게요 416 00:26:27.900 --> 00:26:32.060 자 그러면 여기다가 이렇게 붙여서 417 00:26:32.060 --> 00:26:34.500 이거는 굳이 다시 가져올 필요 없겠죠 418 00:26:34.500 --> 00:26:36.180 이렇게 가져온 다음에 419 00:26:36.180 --> 00:26:38.540 자 포즈는 하지 않을 거고요 420 00:26:38.540 --> 00:26:41.900 폴스 421 00:26:41.900 --> 00:26:46.540 그 다음에 커서는 안 보이게 할 거고요 422 00:26:46.540 --> 00:26:50.020 그리고 이거는 게임 온니로 하겠습니다 423 00:26:50.020 --> 00:26:53.380 그럼 처음에 시작하면은 이제 잘 진행이 되다가 424 00:26:53.380 --> 00:26:56.339 게임오버가 되면 UI 온니로 바뀌고 425 00:26:56.339 --> 00:27:00.579 이제 거기서 다시 재시작하거나 그러면 다시 이게 불리겠죠 426 00:27:00.579 --> 00:27:05.480 그러면은 다시 세팅이 되는 이제 그러한 구조로 구성을 해주겠습니다 427 00:27:05.527 --> 00:27:09.627 게임오버 처리 428 00:27:10.180 --> 00:27:14.660 자 그럼 게임오버 UI가 나오려면 이제 구성을 먼저 해야겠죠 429 00:27:14.660 --> 00:27:16.619 게임오버 UI를 만들어야겠죠 430 00:27:16.619 --> 00:27:18.380 자 그래서 헤더로 와서 431 00:27:18.380 --> 00:27:23.219 게임오버 UI를 똑같이 이 형태로 하나 더 만들어줄게요 432 00:27:23.219 --> 00:27:26.500 자 이렇게 해서 이거는 게임오버 팩토리라고 하겠습니다 433 00:27:33.750 --> 00:27:36.819 이렇게 게임오버 UI 팩토리를 하나 만들어주고요 434 00:27:36.819 --> 00:27:40.260 이쪽으로 와서 여기서 그걸 생성해 줄게요 435 00:27:40.260 --> 00:27:44.619 여기도 크리에이트 위젯 하고요 436 00:27:44.619 --> 00:27:47.140 겟월드 넣고요 437 00:27:47.140 --> 00:27:51.380 그 다음에 여기다가 게임오버 UI 팩토리를 넣어줍니다 438 00:27:51.380 --> 00:27:54.979 자 이거는 오토를 해서 UI는 처리할게요 439 00:27:54.979 --> 00:27:59.780 자 일단은 버튼 처리는 이번에는 블루프린트 상에서 한번 해볼까 해요 440 00:27:59.780 --> 00:28:03.859 자 이렇게 UI를 만든 후에 이거를 뷰포트에 붙여야겠죠 441 00:28:03.859 --> 00:28:11.579 자 UI에서 에드 투 뷰포트 이렇게 붙여주시고요 442 00:28:11.579 --> 00:28:14.660 자 그러면 다시 이쪽으로 이동해서 443 00:28:14.660 --> 00:28:16.500 게임오버 UI도 만들도록 할게요 444 00:28:16.500 --> 00:28:20.699 유저인 인터페이스에서 위젯 블루프린트 445 00:28:20.699 --> 00:28:24.819 자 유저 위젯이라고 하고 WBP 446 00:28:24.819 --> 00:28:29.819 게임오버라고 하겠습니다 447 00:28:29.819 --> 00:28:32.219 이렇게 해서 구성을 해줄 거고요 448 00:28:32.219 --> 00:28:34.900 여기 캔버스 패널을 넣고 449 00:28:34.900 --> 00:28:37.500 그리고 글씨를 넣어야겠죠 450 00:28:37.500 --> 00:28:40.979 이렇게 해서 저는 이것도 센터를 기준으로 할게요 451 00:28:40.979 --> 00:28:42.660 자 텍스트를 하나 넣습니다 452 00:28:42.660 --> 00:28:45.110 이건 게임오버라고 할 거고요 453 00:28:49.260 --> 00:28:52.660 글씨 크기는 한 150 정도로 할게요 454 00:28:52.660 --> 00:28:56.699 자 이것도 사이즈 투 콘텐트로 핏을 맞춰주고요 455 00:28:56.699 --> 00:29:02.020 자 이거는 일단 센터에 놓기 위해서 0.5 456 00:29:02.020 --> 00:29:05.260 이렇게 하고 센터 이렇게 놓고 457 00:29:05.260 --> 00:29:08.730 자 이거는 0이라고 하겠습니다 458 00:29:11.380 --> 00:29:13.750 조금 위로 올리고요 459 00:29:16.900 --> 00:29:19.619 색상도 여러분도 원하시는 색으로 460 00:29:19.619 --> 00:29:25.219 저는 게임오버니까 약간 노란색 계열로 할게요 461 00:29:25.219 --> 00:29:27.339 자 그리고 버튼도 이렇게 만들어주면 되겠죠 462 00:29:27.339 --> 00:29:31.660 여기다가 버튼을 하나 놓고요 463 00:29:31.660 --> 00:29:34.660 좀 큼지막하게 이렇게 넣겠습니다 464 00:29:34.660 --> 00:29:37.289 자 이것도 센터에다 놓고요 465 00:29:41.939 --> 00:29:43.140 텍스트도 넣어줍니다 466 00:29:43.140 --> 00:29:46.860 자 이거는 이제 재시작이라고 할 거고 467 00:29:50.060 --> 00:29:52.380 이거는 재시작이라고 할게요 468 00:29:52.380 --> 00:29:54.900 리스타트 469 00:29:58.900 --> 00:30:01.660 자 큼지막하게 써주겠습니다 470 00:30:01.660 --> 00:30:03.300 그러면 하나 더 만들어줘야겠죠 471 00:30:03.300 --> 00:30:09.660 Ctrl-D 해서 이거는 이제 종료 472 00:30:09.660 --> 00:30:12.439 자 이렇게 이름을 지어줄게요 473 00:30:19.939 --> 00:30:22.300 이렇게 구성을 하고요 474 00:30:22.300 --> 00:30:26.500 이거는 리스타트고요 475 00:30:26.500 --> 00:30:29.339 이거는 종료입니다 476 00:30:29.339 --> 00:30:31.180 자 그리고 백그라운드도 하나 깔아줄 건데 477 00:30:31.180 --> 00:30:33.579 이번에는 블러라는 게 있어요 478 00:30:33.579 --> 00:30:35.579 백그라운드 블러라고 하는데 479 00:30:35.579 --> 00:30:36.699 이렇게 작성을 합니다 480 00:30:36.699 --> 00:30:39.780 블러는 이렇게 해서 넣어준 다음에 481 00:30:39.780 --> 00:30:43.130 제일 위쪽에다가 배치를 하겠습니다 이렇게 482 00:30:44.780 --> 00:30:48.459 자 그리고 이거는 전체를 다 세팅하고요 483 00:30:48.459 --> 00:30:53.099 자 그리고 이거는 다 0으로 해주시면은 꽉 채워줍니다 484 00:30:53.099 --> 00:30:55.060 자 그리고 여기 블러 스트렌스가 있는데 485 00:30:55.060 --> 00:30:59.420 이거 값을 이렇게 올리시면은 뒤에가 이렇게 뿌얘집니다 486 00:30:59.459 --> 00:31:01.780 너무 많이 올리시면은 너무 뿌옇고요 487 00:31:01.780 --> 00:31:06.579 적당한 값으로 저는 한 5 정도만 넣겠습니다 488 00:31:06.579 --> 00:31:08.819 5도 좀 높은 것 같긴 해요 489 00:31:08.819 --> 00:31:12.739 사실 이 블러라는 거는 이미지 픽셀이잖아요 490 00:31:12.739 --> 00:31:15.339 우리가 화면에 보시면은 491 00:31:15.339 --> 00:31:16.900 지금 모니터 같은 데 보면 492 00:31:16.900 --> 00:31:21.900 이게 점점점 하나하나들이 픽셀이라고 합니다 493 00:31:21.900 --> 00:31:25.099 자 픽셀인데 이 픽셀 정보들을 연산을 하는 거예요 494 00:31:25.099 --> 00:31:27.420 그러면은 좌측 상단부터 쭉 있을 텐데 495 00:31:27.420 --> 00:31:31.489 픽셀은 결국은 이렇게 사각형 형태로 되어 있습니다 496 00:31:33.339 --> 00:31:35.859 그림을 좀 잘 못 그렸는데 다시 그릴게요 497 00:31:35.859 --> 00:31:37.660 자 이렇게 픽셀이 있으면 498 00:31:37.660 --> 00:31:42.260 이거를 9개 픽셀이 있다고 해 볼게요 499 00:31:42.260 --> 00:31:44.660 현재 이 픽셀이 현재 계산을 하는데 500 00:31:44.660 --> 00:31:45.859 순서를 쭉 해 오는데 501 00:31:45.859 --> 00:31:47.660 만약 현재 여기를 계산할 거예요 502 00:31:47.660 --> 00:31:50.219 그러면은 어떻게 계산하는 거냐면 503 00:31:50.219 --> 00:31:52.660 여기가 이제 다 색깔이 있을 거 아닙니까 504 00:31:52.660 --> 00:31:55.219 그러면 RGB 색상이 있을 거예요 505 00:31:55.260 --> 00:31:56.780 레드 그린 블루죠 506 00:31:56.780 --> 00:31:59.859 그러면 RGB 색을 전부 다 더합니다 507 00:31:59.859 --> 00:32:02.660 그러니까 R색끼리 더하고 G색 508 00:32:02.660 --> 00:32:04.339 그 다음에 B색끼리 다 더합니다 509 00:32:04.339 --> 00:32:07.339 그리고 이거를 평균을 내요 에버리지로 510 00:32:07.339 --> 00:32:09.420 그 색을 여기다가 표현하는 거예요 511 00:32:09.420 --> 00:32:13.099 사실 그 정확하게 평균이라기 보다는 그 농도가 있는데 512 00:32:13.099 --> 00:32:15.819 그 농도가 바로 스트랜스가 된다고 보시면 돼요 513 00:32:15.819 --> 00:32:21.500 그래서 뿌옇게 되는 그러한 어떤 알고리즘이거든요 514 00:32:21.500 --> 00:32:23.859 자 그래서 이제 블러라는 건 이렇게 많이 합니다 515 00:32:23.859 --> 00:32:28.339 제가 실무 했을 때도 이 블러를 아티스트들이 굉장히 좋아해요 516 00:32:28.339 --> 00:32:33.339 그래서 꼭 블러를 넣어서 구성을 해달라고 했던 그런 기억이 있네요 517 00:32:33.339 --> 00:32:37.780 자 그래서 블러로 이렇게 UI를 구성해 보도록 할게요 518 00:32:37.780 --> 00:32:43.260 그리고 이거를 버튼을 눌렀을 때 이 동작을 하게 할 건데 519 00:32:43.260 --> 00:32:44.540 색깔도 좀 줄까요 520 00:32:44.540 --> 00:32:50.060 이거 너무 색이 리스타트니까 약간 푸릇푸릇하게 하고요 521 00:32:50.060 --> 00:32:55.459 종료는 약간 붉은 계열로 이런 식으로 해줄게요 522 00:32:55.459 --> 00:33:00.540 자 그럼 이거를 버튼 눌렀을 때 버튼 처리를 할 건데 523 00:33:00.540 --> 00:33:03.459 이렇게 보시면은 버튼 이벤트를 넣을 수가 없어요 524 00:33:03.459 --> 00:33:06.540 왜냐면은 이 버튼을 이벤트를 추가하려면 525 00:33:06.540 --> 00:33:08.739 여기 이즈 베리어블 체크를 해야 됩니다 526 00:33:08.739 --> 00:33:14.020 이걸 체크하셔야지 이렇게 이벤트를 추가를 할 수 있어요 527 00:33:14.020 --> 00:33:16.180 이것도 마찬가지구요 528 00:33:16.180 --> 00:33:18.660 자 그럼 하나씩 넣어 보도록 할게요 529 00:33:18.660 --> 00:33:20.579 클릭하면 이렇게 되구요 530 00:33:20.579 --> 00:33:23.699 디자인으로 와서 퀵을 선택하고 531 00:33:23.699 --> 00:33:30.300 온 클릭 이렇게 하시면 이벤트가 이렇게 배치가 됩니다 532 00:33:30.300 --> 00:33:33.099 자 그러면 여기 이제 재시작을 먼저 해 볼게요 533 00:33:33.099 --> 00:33:39.979 재시작은 오픈 레벨 해서 현재 레벨을 다시 오픈할 거구요 534 00:33:39.979 --> 00:33:41.380 그럼 여기 이름을 넣어야 되는데 535 00:33:41.380 --> 00:33:46.819 이름은 커렌트 레벨 네임 536 00:33:46.819 --> 00:33:49.739 이렇게 보시면 이런 누드가 있습니다 537 00:33:49.739 --> 00:33:52.859 겟 커렌트 레벨 네임 이라고 가져올 수 있구요 538 00:33:52.859 --> 00:33:55.060 이 이름을 여기다가 넣어 주시면은 539 00:33:55.060 --> 00:33:57.459 이렇게 변환하는 누드도 생기죠 540 00:33:57.459 --> 00:34:01.509 이렇게 해서 FString인데 FName으로 변환해서 541 00:34:01.509 --> 00:34:03.380 이렇게 넣어 줄 수 있습니다 542 00:34:03.380 --> 00:34:04.540 자 그럼 종료도 해 볼게요 543 00:34:04.540 --> 00:34:09.699 종료도 큇 이라고 보시면 큇 게임이 있어요 544 00:34:09.699 --> 00:34:11.500 자 이걸 클릭하시고 545 00:34:11.500 --> 00:34:13.659 여기는 딱히 안 건드려도 되겠죠 546 00:34:13.659 --> 00:34:15.260 종료할 거니까 547 00:34:15.260 --> 00:34:17.939 자 이거에 대한 설명을 저번에 한번 했으니까요 548 00:34:17.939 --> 00:34:20.979 자 이렇게 구성을 해 주도록 할게요 549 00:34:20.979 --> 00:34:26.979 자 그러면 이제 플레이어 쪽에다가 전 UI를 나오도록 배치를 해야겠죠 550 00:34:26.979 --> 00:34:30.579 이렇게 해서 컴파일을 한번 하고요 551 00:34:36.979 --> 00:34:41.540 게임을 할 때 이렇게 만들어서 붙였으니까요 552 00:34:41.540 --> 00:34:43.820 플레이어에서 553 00:34:43.820 --> 00:34:46.780 아 이거 아니죠 주인공 554 00:34:46.780 --> 00:34:49.780 자 플레이어의 제일 밑에 보면 있겠죠 555 00:34:49.780 --> 00:34:55.330 여기에다가 게임 오브 UI도 이렇게 배치를 해 주도록 하겠습니다 556 00:34:58.780 --> 00:35:02.340 자 그럼 실행을 해보면 이렇게 되구요 557 00:35:02.340 --> 00:35:04.659 자 에너미가 플레이어를 때리면은 558 00:35:04.659 --> 00:35:08.060 아 이거 처리를 해 줘야죠 559 00:35:08.060 --> 00:35:12.939 그러면은 이제 실제로 에너미가 플레이어를 이렇게 때렸을 때 560 00:35:12.939 --> 00:35:17.580 이 On My Take Damage 함수가 호출되면은 이제 되겠죠 561 00:35:17.580 --> 00:35:19.780 자 이거를 처리하기 위해서 562 00:35:19.780 --> 00:35:22.260 FSM으로 갑니다 563 00:35:22.260 --> 00:35:25.020 자 여기에서 위로 올려 보면은 히트가 있겠죠 564 00:35:25.020 --> 00:35:26.219 바로 위에 있네요 565 00:35:26.219 --> 00:35:28.500 자 히트에서 우리가 로그만 출력했는데 566 00:35:28.500 --> 00:35:30.899 여기에서 이제 주인공 타겟이죠 567 00:35:30.899 --> 00:35:35.459 타겟이 지금 자료용이 어떻게 되어 있나요 568 00:35:35.459 --> 00:35:38.340 ATPS 플레이어니까 바로 사용할 수 있을 것 같아요 569 00:35:38.340 --> 00:35:45.739 자 여기에서 On My Take Damage 함수를 이렇게 호출해 주도록 하겠습니다 570 00:35:45.739 --> 00:35:49.670 자 저장하고 다시 컴파일 하고요 571 00:35:55.820 --> 00:35:57.929 자 한번 실행해 볼게요 572 00:36:02.379 --> 00:36:04.899 자 그러면 데미지가 팍팍 들어가죠 573 00:36:04.899 --> 00:36:07.979 그리고 흰색도 쭉 따라오는 거 보여주시구요 574 00:36:07.979 --> 00:36:11.379 그리고 게임오버가 되면 이렇게 블러 처리가 되고 575 00:36:11.379 --> 00:36:13.419 화면에 UI가 나오죠 576 00:36:13.419 --> 00:36:16.910 재시작을 누르면 다시 재시작할 수 있구요 577 00:36:19.260 --> 00:36:23.139 같은 방식으로 578 00:36:23.139 --> 00:36:25.659 네 종료도 됩니다 579 00:36:25.659 --> 00:36:28.540 자 그러면 방금 만든 게임오버 UI를 580 00:36:28.540 --> 00:36:33.379 C++로 다시 만들어서 처리를 하고 마무리를 해 볼게요 581 00:36:33.379 --> 00:36:36.580 자 툴스에서 582 00:36:36.580 --> 00:36:43.139 여기서 유저 위젯을 상속 받습니다 583 00:36:43.139 --> 00:36:44.739 이렇게 받구요 584 00:36:44.739 --> 00:36:46.060 넥스트 합니다 585 00:36:46.060 --> 00:36:52.300 이번에는 게임오버 UI 라고 할게요 586 00:36:59.100 --> 00:37:01.860 구성이 되었고요 587 00:37:01.860 --> 00:37:06.860 그러면 기존에 블루프린트를 했던 내용은 일단 제거하도록 할게요 588 00:37:06.860 --> 00:37:10.699 이거는 삭제를 하고요 589 00:37:10.699 --> 00:37:12.179 디자인으로 와서 590 00:37:12.179 --> 00:37:16.340 여기 있는 이름 버튼 리스타트, 퀵 이 두개를 591 00:37:16.340 --> 00:37:17.780 이제 바인드를 해주면 되겠죠 592 00:37:17.780 --> 00:37:19.500 부문도 바꾸고 593 00:37:19.500 --> 00:37:21.100 자 다시 이쪽으로 와서 594 00:37:21.100 --> 00:37:24.540 자 게임오버 헤더로 갑니다 595 00:37:24.540 --> 00:37:25.899 자 이쪽으로 와서 596 00:37:25.899 --> 00:37:28.479 퍼블릭이라고 하고요 597 00:37:30.379 --> 00:37:32.980 자 유프로퍼티 598 00:37:38.580 --> 00:37:43.979 에디트 애니웨어 599 00:37:43.979 --> 00:37:48.100 자 그리고 메타라고 하고 600 00:37:48.100 --> 00:37:51.370 바인드 위젯 해줄게요 601 00:37:55.620 --> 00:37:57.459 자 그리고 저거 버튼이죠 602 00:37:57.459 --> 00:38:03.260 클래스 유 버튼 포인터 603 00:38:03.260 --> 00:38:04.540 그 다음에 이름이 똑같아야 되죠 604 00:38:04.540 --> 00:38:08.340 버튼 리스타트 605 00:38:08.340 --> 00:38:12.139 똑같이 하나 더 만들고요 606 00:38:12.139 --> 00:38:15.139 자 버튼 종료 607 00:38:15.139 --> 00:38:16.899 이렇게 처리를 해주시구요 608 00:38:16.899 --> 00:38:19.820 그 다음에 이거를 버튼을 연결을 해줘야 되죠 609 00:38:19.820 --> 00:38:21.780 그러면은 함수도 두 개 있어야겠네요 610 00:38:21.780 --> 00:38:24.139 그래서 두 개 함수인 611 00:38:24.139 --> 00:38:30.379 자 보이드 온 클릭 612 00:38:30.379 --> 00:38:35.500 자 온 클릭 리스타트 613 00:38:35.500 --> 00:38:38.620 이거는 항상 유 펑션이 꼭 들어가야 됩니다 614 00:38:38.620 --> 00:38:42.139 왜냐면은 이렇게 바인드 해줄 거잖아요 615 00:38:42.139 --> 00:38:45.580 자 에드 다이나믹 해서 이 델리게이트 에다가 616 00:38:45.580 --> 00:38:47.219 이거 등록할 거기 때문에 617 00:38:47.219 --> 00:38:50.899 이거는 유 펑션 매크로를 꼭 적어줘야 됩니다 618 00:38:50.899 --> 00:38:53.979 그렇게 안하면은 제대로 호출이 되지 않을 거에요 619 00:38:53.979 --> 00:38:57.580 똑같이 유 펑션이라고 하고요 620 00:38:57.580 --> 00:39:02.939 보이드 온 클릭, 종료 퀵 621 00:39:02.939 --> 00:39:04.659 이렇게 만들어 줄게요 622 00:39:04.659 --> 00:39:07.419 자 그러면 버튼과 함수를 만들었으니 623 00:39:07.419 --> 00:39:10.419 이것을 연결할 수 있는 시점이 있어야겠죠 624 00:39:10.419 --> 00:39:12.300 그래서 이 UI가 생성될 때 625 00:39:12.300 --> 00:39:20.899 자 그때는 virtual void native construct라는 함수에서 626 00:39:20.899 --> 00:39:23.699 우리가 처리를 했었던 것 기억나시나요 627 00:39:23.699 --> 00:39:27.580 자 일단 오버라이드 키워드 주고요 628 00:39:27.580 --> 00:39:29.540 이렇게 해서 Alt 엔터 629 00:39:29.540 --> 00:39:35.100 구현부를 다 만들어 주도록 하겠습니다 630 00:39:35.100 --> 00:39:36.020 자 그리고요 631 00:39:36.020 --> 00:39:39.739 이 함수로 와서 연결을 해줄게요 632 00:39:39.739 --> 00:39:47.860 여기서는 버튼을 함수에 연결하고 싶다 633 00:39:47.860 --> 00:39:49.410 버튼의 함수죠 634 00:39:49.410 --> 00:39:53.139 버튼의 함수를 연결하고 싶다 635 00:39:53.139 --> 00:39:54.620 이렇게 작성해야겠죠 636 00:39:54.620 --> 00:39:59.340 자 그러면 버튼 리스타트에다가 637 00:39:59.340 --> 00:40:02.060 에드 다이나믹 아 이게 아니죠 638 00:40:02.060 --> 00:40:03.459 자 여기 보면 온클릭이 있죠 639 00:40:03.459 --> 00:40:09.379 온 클릭 뒤에 에드 다이나믹 이라고 쓰고 640 00:40:09.379 --> 00:40:12.060 그 다음에 디스 이렇게 넣었죠 641 00:40:12.060 --> 00:40:14.260 자 그 다음에 이제 펑션 네임 부분에다가 642 00:40:14.260 --> 00:40:18.219 우리가 호출하고 싶은 함수의 주소를 이렇게 넣어 주면 됩니다 643 00:40:18.219 --> 00:40:21.860 리스타트니까 이 함수를 연결해 줄게요 644 00:40:21.860 --> 00:40:24.540 자 이렇게 해서 리스타트 라고 합니다 645 00:40:24.540 --> 00:40:28.780 자 이걸 사용하려면 버튼이라는 헤더를 꼭 추가해야겠죠 646 00:40:28.780 --> 00:40:32.459 이렇게 이거를 좀 수정을 해 줄게요 647 00:40:32.459 --> 00:40:38.060 이렇게 쓰고 이렇게 하면 되겠죠 648 00:40:38.060 --> 00:40:41.060 자 그 다음에 마찬가지 복사를 하고요 649 00:40:41.060 --> 00:40:44.199 종료도 똑같이 연결합니다 650 00:40:46.699 --> 00:40:49.860 온 클릭 큇 이렇게 연결해 주시고요 651 00:40:49.860 --> 00:40:53.020 자 그 다음에 리스타트와 큇 이렇게 있는데 652 00:40:53.020 --> 00:40:57.300 이거는 저번에도 보았지만 여기에서 우리 지웠죠 653 00:40:57.300 --> 00:41:02.020 근데 여기 보면은 더블 클릭해 보면 이렇게 나오죠 심볼로 654 00:41:02.020 --> 00:41:04.939 자 오픈레벨 이런 것도 나옵니다 655 00:41:04.939 --> 00:41:07.219 자 얘도 있네요 전부 다 있네요 656 00:41:07.219 --> 00:41:09.699 자 그래서 이 함수들을 이용하면 될 것 같고요 657 00:41:09.699 --> 00:41:14.340 종료 같은 경우에는 키스멧 시스템 라이브러리에 있는 658 00:41:14.340 --> 00:41:16.459 이 함수를 이용하면 될 것 같습니다 659 00:41:16.459 --> 00:41:18.139 자 이것부터 한번 해볼까요 660 00:41:18.139 --> 00:41:24.060 이렇게 해서 이렇게 붙여 놓아 보면 이렇게 생겼습니다 661 00:41:24.060 --> 00:41:28.739 이것도 마찬가지 헤더를 이렇게 추가를 해 주셔야 되고요 662 00:41:28.739 --> 00:41:32.659 키스멧부터 하면 되겠죠 663 00:41:32.659 --> 00:41:37.969 그 다음에 여기다가 겟 월드 넣고요 664 00:41:45.219 --> 00:41:47.780 그리고 겟 월드를 넣고 665 00:41:47.780 --> 00:41:52.979 여기서는 겟 퍼스트 플레이어 컨트롤러를 가져옵니다 666 00:41:52.979 --> 00:41:58.220 그 다음에 여기는 이 667 00:42:00.720 --> 00:42:05.219 네 이렇게 해서 큇 종료를 이렇게 넣어 주시면 되고요 668 00:42:05.219 --> 00:42:11.899 그 다음에 마지막 인자 값은 폴스 이렇게 넣겠습니다 669 00:42:11.899 --> 00:42:14.100 이렇게 하면은 종료를 할 수가 있죠 670 00:42:14.100 --> 00:42:17.219 그리고 재시작도 해줄게요 이렇게 해서 671 00:42:17.260 --> 00:42:20.419 재시작은 여기 보면은 오픈 레벨 672 00:42:20.419 --> 00:42:23.659 게임 플레이 스태틱스를 이용했네요 673 00:42:23.659 --> 00:42:27.419 자 이쪽으로 와서 이거를 이용해서 674 00:42:27.419 --> 00:42:30.860 오픈 레벨 이렇게 해주면 됩니다 675 00:42:30.860 --> 00:42:32.100 여기 이름을 넣게 되어있고 676 00:42:32.100 --> 00:42:34.739 먼저 월드 컨텍스트를 넣으니까 677 00:42:34.739 --> 00:42:37.060 겟 월드 이렇게 넣어 주시고요 678 00:42:37.060 --> 00:42:39.699 자 그 다음에 이름을 넣으면 될 것 같은데요 679 00:42:39.699 --> 00:42:42.379 이것도 마찬가지로 헤더를 추가를 해 주셔야겠죠 680 00:42:42.379 --> 00:42:48.100 이렇게 해서 헤더 추가를 하겠습니다 681 00:42:48.100 --> 00:42:51.020 여기까지 이렇게 해주시면 되고요 682 00:42:51.020 --> 00:42:53.860 자 그러면 이름을 현재 이름을 가져올게요 683 00:42:53.860 --> 00:42:59.379 이렇게 해서 커렌트 레벨 네임 이렇게 가져옵니다 684 00:42:59.379 --> 00:43:03.770 자 여기도 월드를 넣고요 685 00:43:08.020 --> 00:43:10.899 자 이것은 스트링이고 여기에는 F-네임이 들어가죠 686 00:43:10.899 --> 00:43:19.300 자 그래서 fstring으로 레벨의 네임 이렇게 가져오고요 687 00:43:19.300 --> 00:43:24.100 그 다음에 이것을 F-네임으로 캐스팅해서 넣어주면 됩니다 688 00:43:24.100 --> 00:43:26.780 F-네임 이렇게 쓰고요 689 00:43:26.780 --> 00:43:30.379 자 이렇게 작성해 주시면은 넣을 수 있습니다 690 00:43:30.379 --> 00:43:35.500 이거는 다시 삭제를 하고요 691 00:43:35.500 --> 00:43:36.979 자 컴파일을 해줍니다 692 00:43:36.979 --> 00:43:40.429 한번 껐다가 다시 한번 컴파일 할게요 693 00:43:56.429 --> 00:44:03.060 자 그러면 다시 실행해서 결과를 볼게요 694 00:44:03.060 --> 00:44:06.500 자 잘 되구요 695 00:44:06.500 --> 00:44:09.780 네 게임오버 잘 나오고 696 00:44:09.780 --> 00:44:13.139 동작을 하지 않네요 697 00:44:13.139 --> 00:44:14.500 자 잠깐만 봅시다 698 00:44:14.500 --> 00:44:17.260 아 부모를 안 바꾼 것 같아요 또 699 00:44:17.260 --> 00:44:19.300 네 여기서 또 부모를 안 바꿨네요 700 00:44:19.300 --> 00:44:22.379 자 이렇게 해서 리페어런트 701 00:44:22.379 --> 00:44:24.100 이거는 게임오버죠 702 00:44:24.100 --> 00:44:27.440 게임오버 UI로 이렇게 부모를 교체를 합니다 703 00:44:27.440 --> 00:44:30.620 자 그러면 잘 연결이 되구요 704 00:44:30.739 --> 00:44:35.749 자 컴파일하고 다시 한번 실행해서 결과를 보겠습니다 705 00:44:41.699 --> 00:44:44.219 네 재시작 되고요 706 00:44:44.219 --> 00:44:46.899 자 당연히 종료도 잘 되겠죠 707 00:44:46.899 --> 00:44:49.119 자 그래도 확인해야 되니까요 708 00:44:52.119 --> 00:44:54.219 네 그러면 게임오버가 되고 709 00:44:54.219 --> 00:44:58.419 종료 이렇게 해서 잘 처리되는 걸 확인했습니다 710 00:44:58.419 --> 00:45:02.370 이번 단원에서 학습한 내용을 정리하도록 하겠습니다 711 00:45:02.471 --> 00:45:03.822 정리하기 플레이어 체력 관리와 피격 이벤트 처리 체력 UI 만들기 712 00:45:03.822 --> 00:45:04.982 플레이어의 체력 기능을 구현하고 체력 UI를 화면에 출력하는 방법 캠버스의좌측 상단에 Progress Bar 클릭 앤 드래그 후 Percent 게이지를 조정함 713 00:45:04.982 --> 00:45:05.698 Oberlay PANEL을 사용하여 Progress Bar 2개를 겹친 후 HPBarBack와 HPBar로 이름 수정 714 00:45:05.698 --> 00:45:06.332 class UProgressBar* HPBarBack 선언 후 virtual boid NatibeTick() 함수 구현함 715 00:45:06.332 --> 00:45:06.933 class UProgressBar* HPBarBack 선언 후 void SetHP() 함수 구현함 716 00:45:06.933 --> 00:45:07.434 알파값을 고정하는 Lerp 함수 구성함 717 00:45:07.434 --> 00:45:08.357 플레이어 체력 관리와 피격 이벤트 처리 피격 이벤트 처리 718 00:45:08.357 --> 00:45:10.457 적이 플레이어를 공격 시 체력이 소모되고 체력이 0이 되면 게임을 일시 정지하는 방법 719 00:45:10.457 --> 00:45:12.575 Void OnMy TakeDamage() 함수 구현함 SetHP(HP, MaxHP)로 UI에 반영함 720 00:45:12.575 --> 00:45:13.935 게임오버 처리 게임오버가 되면 GameOver UI 위젯을 화면에 출력하고 버튼을 누르면 재시작 또는 나가기 되도록 처리하는 방법 721 00:45:13.935 --> 00:45:15.685 Auto ui=CreateWidget() 함수를 구현하고 블루프린트에서 버튼을 처리함 버튼 이벤트를 추가하기 위해서 is Variable에 체크 722 00:45:15.685 --> 00:45:17.420 Open Leverl 노드를 연결하여 Restart 버튼 이벤트 처리 Quit Game 노드를 연결하여 Quit 버튼 이벤트 처리