﻿1
00:00:04,570 --> 00:00:05,590
‫こんにちは､ ようこそ｡

2
00:00:05,590 --> 00:00:10,120
‫この講義では､ たくさんのクールな事柄を取り上げますが､ 最も重要なのは､

3
00:00:10,120 --> 00:00:14,050
‫アクタを他のアクタにチャイルする方法です｡

4
00:00:14,050 --> 00:00:24,460
‫このように､ ライフルはシューターキャラクターの子であり､ そこにあるメッシュが実際にこのスケルタルメッシュの手にくっつくようにすることができます｡

5
00:00:24,460 --> 00:00:28,180
‫ご覧のように､ その銃はそのプレイヤーの手と一緒に動いているのです｡

6
00:00:28,180 --> 00:00:30,070
‫さっそく潜入してみましょう｡

7
00:00:30,830 --> 00:00:40,460
‫そこで､ このメッシュに銃を持たせる前にまずしたいことは､ 現在ある銃を削除するか隠すことです｡

8
00:00:40,640 --> 00:00:46,910
‫さて､ これを行う最も簡単な方法は､ 銃のメッシュを持つボーンを非表示にすることです｡

9
00:00:46,910 --> 00:00:47,550
‫見てみよう｡

10
00:00:47,570 --> 00:00:53,900
‫そこで､ シューターキャラクターに話を移せば､ BPがその入り口となるわけです｡

11
00:00:53,900 --> 00:00:57,010
‫そして､ ここから実際のメッシュを探したいと思います｡

12
00:00:57,020 --> 00:00:57,950
‫骨格のメッシュができました｡

13
00:00:57,950 --> 00:01:07,550
‫この骨格を見ると､ この銃をクリックすると､ 武器と呼ばれる骨がつながっているのがわかります｡

14
00:01:07,550 --> 00:01:11,330
‫骨と武器のアンダースコアAR

15
00:01:11,450 --> 00:01:17,150
‫基本的にはこれを隠したいのですが､ これを全面的に隠す最も簡単な方法はコードで行うことで､

16
00:01:17,150 --> 00:01:20,030
‫私たちはC++でこれを行うつもりです｡

17
00:01:20,030 --> 00:01:23,510
‫そこで､ まずはメッシュコンポーネントを手に入れることです｡

18
00:01:23,630 --> 00:01:30,380
‫キャラクターのサブクラスでこれを行う方法は､ mesh coolを取得するために呼び出すことです｡

19
00:01:30,380 --> 00:01:31,640
‫だから､ メッシュにするんです｡

20
00:01:31,640 --> 00:01:35,420
‫そして､ メッシュで､ ボーンを隠したいのです｡

21
00:01:35,420 --> 00:01:46,310
‫便利なことに､ 名前でボーンを隠すメソッドがあり､ これは実際にスケルトンメッシュコンポーネントの親であるスキンメッシュコンポーネントに存在します｡

22
00:01:46,310 --> 00:01:48,080
‫ヘッダーファイルを簡単に見てみましょう｡

23
00:01:48,080 --> 00:01:49,340
‫スキンのついたメッシュコンポーネント｡

24
00:01:50,240 --> 00:01:52,190
‫ここには､ いくつかの機能があります｡

25
00:01:52,190 --> 00:01:55,370
‫探しているのは､ 名前からしてHide Boneです｡

26
00:01:55,370 --> 00:01:57,110
‫ここでサインを見ることができるんですね｡

27
00:01:57,110 --> 00:01:59,750
‫ボーンネームが入ったり､ Fネームが入ったりしています｡

28
00:01:59,750 --> 00:02:02,900
‫そして､ 2つ目がこのE魚体OPです｡

29
00:02:02,990 --> 00:02:08,660
‫私の知る限り､ これはコードベースでは使われていませんが､ シグネチャにあるため提供する必要があります｡

30
00:02:08,660 --> 00:02:10,460
‫では､ さっそく使ってみましょう｡

31
00:02:10,460 --> 00:02:15,290
‫そこでアローは､ ハイドボーンを名前でやってみることにしました｡

32
00:02:15,410 --> 00:02:16,910
‫残念ながら､ オートコンプリートが機能しないんです｡

33
00:02:16,910 --> 00:02:23,480
‫4のバグですね｡  Vのコードの現時点での25または完了するには､ 100％動作するようにしたいことはありません｡

34
00:02:23,480 --> 00:02:24,590
‫でも､ それでいいんです｡

35
00:02:24,590 --> 00:02:26,810
‫代わりにマニュアルのやり方を学べばいいのです｡

36
00:02:27,380 --> 00:02:33,200
‫次に､ 骨の名前が必要ですが､ これは練習として､ すぐに記入できるようにしておきます｡

37
00:02:33,500 --> 00:02:41,520
‫そして､ もうひとつは､ 体操着のようなものが欲しかったので､ それを目指したいと思っています｡

38
00:02:41,660 --> 00:02:45,200
‫これはenumなので､ 記入する必要があります｡

39
00:02:45,770 --> 00:02:49,370
‫F 12を使って定義に行き､ 何ができたか確認します｡

40
00:02:49,550 --> 00:02:50,570
‫PBO なし

41
00:02:50,570 --> 00:02:53,030
‫常識的なデフォルトと思えるようなことはしないでください｡

42
00:02:53,030 --> 00:02:57,560
‫そして､ セミコロンを使って､ この行を終わらせましょう｡

43
00:02:57,980 --> 00:03:01,790
‫では､ これをコンパイルして､ 必要なインクルードがすべて揃っているかどうか見てみましょう｡

44
00:03:02,450 --> 00:03:02,810
‫かっこいい｡

45
00:03:02,810 --> 00:03:07,040
‫うまくいっているようなので､ これで必要なものが揃ったのでしょう｡

46
00:03:07,070 --> 00:03:14,420
‫ボーン名はweapon underscore Rです｡ weapon

47
00:03:14,420 --> 00:03:21,350
‫underscore Rはトリックを行う必要があります｡

48
00:03:21,350 --> 00:03:29,150
‫この状態でリコンパイルし､ 再生ボタンを押すと､ 銃を持たなくなっているのがわかると思います｡

49
00:03:29,150 --> 00:03:29,960
‫ファンタスティック｡

50
00:03:29,960 --> 00:03:34,940
‫そこで次は､ 俳優の銃とは別の銃を手にすることになる｡

51
00:03:34,940 --> 00:03:37,460
‫そこで､ スケルトンに移動する必要があります｡

52
00:03:37,460 --> 00:03:42,260
‫そして､ ここでやりたいことは､ 新しいソケットを追加することです｡

53
00:03:42,260 --> 00:03:46,730
‫そこで､ 武器の代わりにソケットを追加することにします｡

54
00:03:46,730 --> 00:03:48,110
‫R そして､ ソケットとは何でしょうか｡

55
00:03:48,650 --> 00:03:53,540
‫ソケットとは､ その名の通りプラグを差し込むためのものです｡

56
00:03:53,570 --> 00:03:56,600
‫他のものを差し込むことができる点です｡

57
00:03:56,600 --> 00:04:04,880
‫たとえば､ 銃のプラグインを､ メッシュ全体ではなく､ メッシュの特定のボーンにチャイルドさせ､

58
00:04:04,880 --> 00:04:13,280
‫キャラクターの腕に合わせて正しく動かせるようにしたい場合があります｡

59
00:04:13,280 --> 00:04:17,060
‫アニメーションをするとき､ 彼がジョギングしているとき､ 胴体にガチガチに固定されているのではなく､

60
00:04:17,060 --> 00:04:22,340
‫手のどこかに付いているように見えるでしょうから｡

61
00:04:22,340 --> 00:04:26,690
‫そこで､ ウェポンに子ソケットを追加することにします｡

62
00:04:27,050 --> 00:04:27,440
‫これをやってください｡

63
00:04:27,440 --> 00:04:35,420
‫スケルトンに移動して､ ソケットを取り付けたいボーンを右クリックし､ ソケットの追加をクリックします｡

64
00:04:35,420 --> 00:04:38,780
‫そして､ これを武器と呼ぶことにします｡

65
00:04:39,880 --> 00:04:40,900
‫ソケットです｡

66
00:04:41,530 --> 00:04:46,550
‫ここでは慣例としてキャメルケースを使用していますが､ これをアタッチすることにします｡

67
00:04:46,580 --> 00:04:52,930
‫さて､ 実際に銃の取り付けを行う際に､ この方法が役に立つことがおわかりいただけると思います｡

68
00:04:53,320 --> 00:05:00,970
‫さて､ ここで注意しなければならないのは､ 実行時にコンストラクタで行うようなセットアップアタッチメントを行わないことです｡

69
00:05:00,970 --> 00:05:06,010
‫アタッチメントを行う場合､ コンストラクタで使用する関数ではなく､ 別の関数群を使用する必要があります｡

70
00:05:06,370 --> 00:05:11,830
‫ここでいう階層とは､ シーンの構成要素間のことです｡

71
00:05:11,860 --> 00:05:16,430
‫さて､ 幸いなことに､ 銃の根元の部品を取り出してきて､ それを取り付けるということはありません｡

72
00:05:16,450 --> 00:05:24,970
‫アタッチメントを行うためのヘルパーメソッドがアクターにあり､ それがコンポーネントにアタッチされています｡

73
00:05:25,150 --> 00:05:27,040
‫では､ その定義がどこにあるのかを見てみましょう｡

74
00:05:27,040 --> 00:05:33,100
‫アクターHのヘッダーファイルを見てみると､ いくつかありますが､

75
00:05:33,100 --> 00:05:43,150
‫ゲーム・フレームワークの下にあるヘッダーファイルが必要です｡

76
00:05:43,150 --> 00:05:43,720
‫これです｡

77
00:05:43,870 --> 00:05:45,610
‫では､ これは何を取り込むのでしょうか？

78
00:05:45,610 --> 00:05:50,080
‫Uで受けることになる｡  S. コンポーネント､ この場合アタッチする親は､

79
00:05:50,080 --> 00:05:53,110
‫キャラクタのスケルトンメッシュにするつもりです｡

80
00:05:53,350 --> 00:05:55,930
‫トランスフォームのルールは､ ほんの一瞬でこのことに触れます｡

81
00:05:55,930 --> 00:06:00,780
‫そして､ ソケット名ですが､ これはスケルトンメッシュのどこに接続するかということです｡

82
00:06:00,800 --> 00:06:02,920
‫スケルトンメッシュであれば､ ソケットに装着されます｡

83
00:06:02,920 --> 00:06:09,190
‫スケルトンメッシュでない場合､ ソケットの引数を無視して､ 例えばスタティックメッシュであればアタッチするだけです｡

84
00:06:09,370 --> 00:06:12,010
‫そこで､ メッシュを取得するためにアタッチしたいのです｡

85
00:06:12,700 --> 00:06:14,560
‫このようなトランスフォームのルールがあります｡

86
00:06:14,560 --> 00:06:15,160
‫それは何ですか？

87
00:06:15,160 --> 00:06:20,430
‫F12をクリックして､ 利用可能なさまざまなルールにアクセスしてみましょう｡

88
00:06:20,440 --> 00:06:22,360
‫これがプリセットのルールです｡

89
00:06:22,360 --> 00:06:26,260
‫自分で定義することもできますが､ プリセットされているものを使うのがよいでしょう｡

90
00:06:26,260 --> 00:06:31,450
‫相対変換を維持する､ ワールド変換を維持する､ ターゲットにスナップする､ スケールを含まない､ これらの機能は無視されます｡

91
00:06:31,450 --> 00:06:37,120
‫最後に､ 主な注意点は最初の2つで､ 基本的には､ アタッチするときに､ ワールド内の同じ場所に留まるべきか､

92
00:06:37,120 --> 00:06:46,000
‫それともそのワールド位置を新しいローカル位置として使用するかということです｡

93
00:06:46,000 --> 00:06:52,540
‫なぜなら､ その銃は基本的にゼロゼロであり､ 世界の中でその位置にあることが望ましいからです｡

94
00:06:52,540 --> 00:06:55,510
‫相対変換を維持したいので､ そうしてみましょう｡

95
00:06:55,510 --> 00:06:58,840
‫F変換のルールで相対変換を維持させるんだ｡

96
00:07:00,840 --> 00:07:06,480
‫だから､ 私は部屋のルールを変換しているコロンコロンと､ 私はちょうどこのように相対的な変換を維持する上にコピーしてみましょう､

97
00:07:06,480 --> 00:07:10,950
‫そして､ 我々は､ ソケットをしたいです｡

98
00:07:10,950 --> 00:07:16,260
‫ここで再びテキストマクロを使用し､ ソケット名は武器ソケットとしました｡

99
00:07:17,840 --> 00:07:19,490
‫そして､ ラインを仕上げる｡

100
00:07:19,490 --> 00:07:21,870
‫これでアタッチメントが設定されますね｡

101
00:07:21,890 --> 00:07:26,990
‫そして､ 最後のポイントは､ セットアップしたいところです｡

102
00:07:27,660 --> 00:07:31,990
‫このクラスを所有者とする銃｡

103
00:07:32,010 --> 00:07:33,730
‫これはちょっと微妙なところです｡

104
00:07:33,750 --> 00:07:34,940
‫なぜオーナーがいるのか？

105
00:07:34,950 --> 00:07:38,230
‫ただ､ 役者同士の上下関係はないと言っただけです｡

106
00:07:38,250 --> 00:07:42,360
‫まあ､ トランスフォームという意味ではないのですが､ 所有権はあります｡

107
00:07:42,360 --> 00:07:48,060
‫そして､ この所有権が如何なく発揮されるのが､ マルチプレイとダメージです｡

108
00:07:48,060 --> 00:07:52,260
‫ですから､ 所有者についてどのように知る必要があるかは､ 後ほど見ていくことにしましょう｡

109
00:07:52,290 --> 00:08:02,010
‫また､ 銃は所有するキャラクターが何であるかを知ることができ､ それを使って後で所有するキャラクターへの参照を得ることができます｡

110
00:08:02,040 --> 00:08:03,070
‫これは便利でしょう｡

111
00:08:03,090 --> 00:08:08,100
‫今のところ特に気にしていませんが､ 念のためやっておきます｡

112
00:08:08,340 --> 00:08:09,400
‫今実際にこの間違った名前を付けてください｡

113
00:08:09,420 --> 00:08:15,270
‫所有者を設定するのではなく､ 所有者をこれに設定すべきです｡ なぜなら､ これは銃の所有者であるアクターだからです｡

114
00:08:15,960 --> 00:08:16,640
‫クールビーンズ

115
00:08:16,680 --> 00:08:19,680
‫コンパイルして､ これがうまくいっているかどうか見てみましょう｡

116
00:08:20,430 --> 00:08:21,700
‫コンパイルに成功したもの｡

117
00:08:21,700 --> 00:08:24,330
‫飛び込みでゲームをしてみよう｡

118
00:08:24,340 --> 00:08:25,000
‫すごい｡

119
00:08:25,000 --> 00:08:26,990
‫私たちは武器を手にしたのです｡

120
00:08:27,010 --> 00:08:28,080
‫正しい場所にあるのか？

121
00:08:28,090 --> 00:08:28,930
‫見てみよう｡

122
00:08:28,930 --> 00:08:32,680
‫ここから8をFして手札を見ましょう｡

123
00:08:32,710 --> 00:08:33,640
‫そうとも言えません｡

124
00:08:33,640 --> 00:08:36,250
‫ここで少し調整すればいいことがおわかりいただけると思います｡

125
00:08:36,250 --> 00:08:37,480
‫というわけで､ そういうことになります｡

126
00:08:37,480 --> 00:08:39,400
‫そして､ これはあなたへの挑戦状です｡

127
00:08:39,400 --> 00:08:46,360
‫基本的には､ このハンドルがメッシュのレイスキャラクターの手の中に実際にあるように､

128
00:08:46,360 --> 00:08:52,520
‫メッシュ上でどのようなオフセットが必要かを見つけようとするものです｡

129
00:08:52,540 --> 00:08:54,520
‫ビデオを一時停止して､ それでやってみてください｡

130
00:08:54,820 --> 00:08:55,060
‫なるほど｡

131
00:08:55,060 --> 00:08:55,540
‫お帰りなさい｡

132
00:08:55,540 --> 00:09:00,550
‫そこで､ そのメッシュを選択して動かしてみるということをやってみます｡

133
00:09:00,550 --> 00:09:06,820
‫ビューポートのグリッドスナップサイズを少し小さめに設定する必要がありそうです｡

134
00:09:06,820 --> 00:09:12,100
‫そして､ その手をできる限り拡大してみる｡

135
00:09:13,340 --> 00:09:13,640
‫なるほど｡

136
00:09:13,640 --> 00:09:15,290
‫それを少しづつ下げていく｡

137
00:09:15,320 --> 00:09:16,550
‫いいと思います｡

138
00:09:16,550 --> 00:09:17,090
‫叫んでください｡

139
00:09:17,120 --> 00:09:21,620
‫では､ その場所をコピーして開いてみましょう｡

140
00:09:21,620 --> 00:09:24,710
‫コンテンツブラウザで､ BPライフルを開いてください｡

141
00:09:25,100 --> 00:09:34,370
‫フルブループリントエディタを開き､ メッシュに移動してシミュレーションを停止し､ そこにコピーしていた場所をペーストします｡

142
00:09:34,730 --> 00:09:35,210
‫なるほど､ クールだ｡

143
00:09:35,210 --> 00:09:36,200
‫了解しました｡

144
00:09:36,200 --> 00:09:39,110
‫そして､ 再生ボタンを押して行きましょう｡

145
00:09:40,050 --> 00:09:43,170
‫そして､ それが実際に正しいことを伝えてくれたことを確認しましょう｡

146
00:09:43,290 --> 00:09:46,490
‫フェードアウトとズームイン

147
00:09:46,500 --> 00:09:51,660
‫ちなみに､ このような動きをしているときは､ スクロールホイールで動きを遅くすることができます｡

148
00:09:51,810 --> 00:09:52,530
‫ファンタスティック｡

149
00:09:52,530 --> 00:09:56,910
‫ハンドルに直接手をかけているように見える｡

150
00:09:57,640 --> 00:09:58,180
‫すごいものですね｡

151
00:09:58,180 --> 00:10:08,830
‫ここまでで､ アクタを他のアクタに従属させる方法と､ シーンコンポーネントをスケルトンメッシュのソケットに接続する方法を学びました｡

152
00:10:08,830 --> 00:10:18,250
‫次回の講義では､ 射撃について少し触れ､ この銃のアーキテクチャが基本的に射撃のアーキテクチャにどのように組み合わされているかを見ていきたいと思います｡

153
00:10:18,250 --> 00:10:19,570
‫では､ 現地でお会いしましょう｡

