﻿1
00:00:04,320 --> 00:00:05,670
‫やあ､ お帰りなさい｡

2
00:00:05,700 --> 00:00:11,280
‫このビデオでは､ コンポーネントについて説明し､ ベースポーンがコリジョンやメッシュなどのビジュアル表現のためにコンポーネントを必要とすること､

3
00:00:11,280 --> 00:00:20,740
‫また､ 投射物を出現させるスポーンポイントについて説明します｡

4
00:00:20,760 --> 00:00:26,070
‫これから､ コンポーネント､ サポート､ アタッチメントによって､ さまざまなコンポーネントを互いにアタッチできること､

5
00:00:26,070 --> 00:00:33,930
‫また､ ポーンには､ --のトランスフォーム情報を格納するルートコンポーネントがあることについて説明します｡

6
00:00:34,200 --> 00:00:42,630
‫さて､ すでに Base -- という最初の C++ クラスを作成しましたので､ 次はこの Base -- にいくつかのものを追加していきます｡

7
00:00:42,690 --> 00:00:50,090
‫ベース--には､ 戦車の基部や砲塔のメッシュなど､ いくつかの部品が必要になります｡

8
00:00:50,100 --> 00:00:57,210
‫C メッシュフォルダに､ 戦車のベース､ 戦車のタレット､ 塔のベースとタレットが用意されています｡

9
00:00:57,540 --> 00:01:00,480
‫そこで､ いくつかのメッシュ部品が必要になります｡

10
00:01:00,480 --> 00:01:08,000
‫また､ 戦車と砲塔がすれ違わないように､ 衝突を処理するためのカプセルコンポーネントも必要です｡

11
00:01:08,010 --> 00:01:10,890
‫さて､ 少しコンポーネントの話をしましょう｡

12
00:01:11,040 --> 00:01:17,180
‫クラスにコンポーネントを追加する場合､ そのコンポーネントがどのようなクラスになるかを決める必要があります｡

13
00:01:17,190 --> 00:01:19,830
‫さて､ ひとつの選択肢として､ シーンコンポーネントがあります｡

14
00:01:20,070 --> 00:01:28,380
‫コンポーネントクラスは､ いくつかのプロパティを持ちます｡ 例えば､ トランスフォーム､ つまり位置や回転などを持ちます｡

15
00:01:28,440 --> 00:01:30,330
‫また､ アタッチメントにも対応しています｡

16
00:01:30,330 --> 00:01:34,530
‫つまり､ シーンコンポーネントに対して､ 他のコンポーネントをアタッチすることができるのです｡

17
00:01:34,530 --> 00:01:36,900
‫その仕組みについては､ 後ほど詳しくご紹介します｡

18
00:01:37,020 --> 00:01:43,410
‫また､ シーンコンポーネントには視覚的な表現がありません｡ つまり､ メッシュなどはありません｡

19
00:01:43,410 --> 00:01:45,570
‫実際にゲーム内で見ることはできません｡

20
00:01:45,570 --> 00:01:52,650
‫さて､ Unreal Engine には､ シーン コンポーネントから派生した他のクラス､ 例えばカプセル コンポーネントがあります｡

21
00:01:52,680 --> 00:01:59,130
‫YOUのカプセルコンポーネントクラスは､ コリジョンを処理するために作られたもので､ それだけで十分なのです｡

22
00:01:59,130 --> 00:02:06,240
‫カプセル型は､ 床から落ちたり､ 壁を通り抜けたりしないようにするための部品です｡

23
00:02:06,240 --> 00:02:11,850
‫また､ シーンコンポーネントクラスから派生した静的メッシュコンポーネントもあります｡

24
00:02:12,150 --> 00:02:19,110
‫use static mesh component クラスは､ 視覚的な表現､ 特に私たちの -- クラスに属するメッシュを､

25
00:02:19,140 --> 00:02:25,830
‫移動させながら世界で見ることができるようにする機能を提供します｡

26
00:02:26,100 --> 00:02:32,550
‫さて､ デフォルトでは -- クラスはすでにコンポーネントを持っており､ それはルートコンポーネントと呼ばれています｡

27
00:02:32,550 --> 00:02:37,440
‫VSのコードに戻って､ このルートコンポーネントを見つけられるかどうか見てみましょう｡

28
00:02:37,440 --> 00:02:43,170
‫Base Pont CPで､ コンストラクタのどこか､ 例えばここをクリックして､

29
00:02:43,170 --> 00:02:48,270
‫root componentと入力します｡

30
00:02:48,450 --> 00:02:56,850
‫この上で右クリックし､ 「定義に移動」をクリックすると､ 突然､ アクターが開かれるのです｡

31
00:02:56,850 --> 00:03:04,740
‫そして､ このアクターの保護されたセクションには､ ルートコンポーネントと呼ばれるコンポーネントポインタが表示されています｡

32
00:03:05,190 --> 00:03:10,470
‫つまり､ このルートコンポーネントという変数は､ アクタークラスに存在するのです｡

33
00:03:10,470 --> 00:03:15,690
‫そのため､ actorから派生したものは､ このルートコンポーネント変数を継承することになります｡

34
00:03:16,260 --> 00:03:20,820
‫つまり､ ベースとなる...このルートコンポーネント変数も持っているということです｡

35
00:03:20,850 --> 00:03:33,870
‫つまり､ ある特定のコンポーネントの位置について考えるときはいつでも､ 実際にはそのルートコンポーネント（シーンコンポーネント）のトランスフォームに格納されている位置情報について話しているのです｡

36
00:03:33,870 --> 00:03:36,690
‫つまり､ シーンコンポーネントが独自のトランスフォームを持つわけです｡

37
00:03:36,720 --> 00:03:43,500
‫このままActor Hを閉じて､ base --のコンストラクタに追加したこの行を削除します｡

38
00:03:43,890 --> 00:03:52,770
‫つまり､ このルートコンポーネントには､ typeがyou seen componentであることが分かっています｡

39
00:03:52,770 --> 00:03:57,210
‫しかし､ このルートコンポーネントには視覚的な表現がないこともわかっています｡

40
00:03:57,210 --> 00:03:58,380
‫それは目に見えないものです｡

41
00:03:58,380 --> 00:04:05,820
‫しかし､ そのルートコンポーネントを､ seen componentから型を派生させた他のオブジェクトに再割り当てすることができる｡

42
00:04:05,850 --> 00:04:07,350
‫今､ 私たちは､ U.S.A.のことを見た｡

43
00:04:07,350 --> 00:04:10,500
‫カプセルコンポーネントクラスは､ シーンコンポーネントから派生したものです｡

44
00:04:10,500 --> 00:04:17,670
‫そのため､ カプセルを作成すれば､ デフォルトのシーンコンポーネントの代わりに､ そのカプセルをルートに割り当てることができます｡

45
00:04:17,820 --> 00:04:21,360
‫今､ シーンコンポーネント､ サポートアタッチメントの話をしました｡

46
00:04:21,360 --> 00:04:26,790
‫つまり､ 他のコンポーネントを作成し､ それをシーンコンポーネントにアタッチすることができるのです｡

47
00:04:26,790 --> 00:04:33,510
‫そこで､ 例えばbase meshという静的なメッシュコンポーネントを作れば､ それをルートコンポーネントにアタッチすることができます｡

48
00:04:33,540 --> 00:04:40,080
‫さて､ 静的メッシュコンポーネントは､ シーンコンポーネントクラスから派生したものなので､ アタッチメントにも対応しています｡

49
00:04:40,080 --> 00:04:44,760
‫ですから､ 別のメッシュを作れば､ それを最初のメッシュにくっつけることができるのです｡

50
00:04:44,760 --> 00:04:50,760
‫そこで､ カレントメッシュの静的メッシュコンポーネントを作成し､ それをベースメッシュコンポーネントにアタッチすることができます｡

51
00:04:50,790 --> 00:04:53,940
‫あとは､ シーンコンポーネントを新規に作成するだけです｡

52
00:04:53,940 --> 00:05:01,890
‫例えば､ 射的のスポーンポイントと呼べるようなシーンコンポーネントが欲しい場合､ タレットメッシュにアタッチすることが可能です｡

53
00:05:01,890 --> 00:05:03,750
‫さて､ なぜシーンを作るだけなのでしょうか？

54
00:05:03,860 --> 00:05:04,510
‫コンポーネントです｡

55
00:05:04,520 --> 00:05:07,020
‫独自のビジュアル表現を施すことができないのです｡

56
00:05:07,040 --> 00:05:13,280
‫もし､ 弾丸を発射するスポーンポイントが必要なら､ シーンコンポーネントは､ 独自のトランスフォーム､ 独自の位置､

57
00:05:13,280 --> 00:05:22,460
‫回転などを持っているので､ これに最適です｡ で､ それを投射物を生成するポイントとして利用することができます｡

58
00:05:22,490 --> 00:05:28,880
‫つまり､ カプセルをルートコンポーネントとして割り当てると､ ルートコンポーネントはUを持つことになります｡

59
00:05:28,910 --> 00:05:40,460
‫カプセルコンポーネントのクラスタイプ､ ベースメッシュとタレットメッシュはスタティックメッシュコンポーネントで､ 発射体のスポーンポイントはUシーコンポーネントになります｡

60
00:05:40,880 --> 00:05:46,670
‫さて､ この愛着というものについて､ ちょっとお話ししましょう｡

61
00:05:46,700 --> 00:05:54,350
‫つまり､ ルート部品が空間内を移動すると､ それに付随するすべての部品が一緒に移動するのです｡

62
00:05:54,740 --> 00:05:59,640
‫しかし､ ベースメッシュ自体はルートに対して相対的に動くことができます｡

63
00:05:59,660 --> 00:06:06,260
‫例えば､ 回転させれば､ ベースとなるメッシュに付着しているものはすべて追従します｡

64
00:06:06,680 --> 00:06:15,020
‫同様に､ この砲台メッシュをベースメッシュに取り付けて､ それ自体はベースメッシュから独立して動けるようにしています｡

65
00:06:15,050 --> 00:06:21,320
‫例えば､ タレットメッシュを回転させると､ タレットメッシュが回転し､ シーンコンポーネントなど､ タレットメッシュに付属するものは､

66
00:06:21,320 --> 00:06:25,270
‫タレットメッシュに追従して回転するようになります｡

67
00:06:25,280 --> 00:06:30,560
‫そのため､ タレットメッシュが回転すると､ シーンコンポーネントも一緒に動き回ることになります｡

68
00:06:30,560 --> 00:06:35,450
‫しかし､ もちろんやろうと思えば､ タレットメッシュに対してシーンコンポーネントを相対的に移動させることができます｡

69
00:06:35,630 --> 00:06:40,550
‫そして､ シーンコンポーネントには何もついていないので､ まあ､ 何もついていないんですけどね｡

70
00:06:40,580 --> 00:06:46,330
‫では､ ブループリントでコンポーネントがどのように機能するか､ コンテンツフォルダが何を選択したかを見てみましょう｡

71
00:06:46,340 --> 00:06:50,930
‫右クリックしてBlueprint Classを選択し､ 新しいブループリントを作成します｡

72
00:06:50,960 --> 00:07:01,020
‫アクターを選択して､ コンポーネントアクターと呼びましょう｡ コンポーネントアクターをダブルクリックして､ デフォルトのシーンルートがあることに注意してください｡

73
00:07:01,040 --> 00:07:05,040
‫これは､ C++で見たルートコンポーネント変数を表しています｡

74
00:07:05,060 --> 00:07:12,770
‫ここで､ 必要であれば､ 追加ボタンをクリックし､ 追加したいコンポーネントの種類を選択することで､ 新しいコンポーネントを追加することができます｡

75
00:07:12,770 --> 00:07:15,790
‫カプセルを検索し､ 「カプセルコリジョン」を選択します｡

76
00:07:15,800 --> 00:07:17,900
‫カプセル型部品です｡

77
00:07:17,900 --> 00:07:20,320
‫C++に対応するのは､ U.

78
00:07:20,330 --> 00:07:21,780
‫カプセルコンポーネントクラス｡

79
00:07:21,800 --> 00:07:24,260
‫デフォルトのシーンのすぐ下にあることに注意してください｡

80
00:07:24,260 --> 00:07:27,440
‫ルート これは､ このシーンに付いていることを示します｡

81
00:07:27,440 --> 00:07:30,350
‫ルート これからも部品を増やしていくことができます｡

82
00:07:30,350 --> 00:07:40,430
‫例えば､ 「Kub」を選択すると､ 静的メッシュコンポーネントが追加され､ 詳細パネルの静的メッシュのプロパティが自動的に立方体に設定されます｡

83
00:07:40,430 --> 00:07:41,460
‫静止画のメッシュ｡

84
00:07:41,480 --> 00:07:46,420
‫コンポーネントパネルで､ 立方体がカプセルのすぐ下にあることに注目してください｡

85
00:07:46,430 --> 00:07:55,490
‫その隣のドロップダウンをクリックすると､ ここにキューブが表示されなくなるので､ これを折りたたんで､ 指定されたコンポーネントに接続されているオブジェクトを非表示にすることができます｡

86
00:07:55,490 --> 00:08:01,970
‫これで､ ルートコンポーネントを再割り当てするには､ コンポーネントの1つをクリックして､ デフォルトのシーンルートにドラッグします｡

87
00:08:01,970 --> 00:08:08,210
‫例えば､ カプセルをクリックして､ デフォルトのシーンルートにドラッグすると､ ルートコンポーネントになります｡

88
00:08:08,210 --> 00:08:11,870
‫そこで､ ルートコンポーネントをこのカプセルコンポーネントに再割り当てしました｡

89
00:08:11,870 --> 00:08:14,180
‫アタッチメントを割り当てることも可能です｡

90
00:08:14,180 --> 00:08:16,430
‫追加をクリックし､ 球を選択してみましょう｡

91
00:08:16,430 --> 00:08:21,200
‫さて､ デフォルトでは､ 球体は立方体の静的メッシュと同じようにカプセルに取り付けられています｡

92
00:08:21,200 --> 00:08:27,560
‫しかし､ 球体をクリックしてキューブ上にドラッグすると､ 球体はキューブに直接取り付けられるようになりました｡

93
00:08:27,560 --> 00:08:34,340
‫球体をクリックしてカプセルにドラッグすると､ 新しいルートを作るか､ くっつけるかのオプションがあります｡

94
00:08:34,700 --> 00:08:39,680
‫アタッチメントを選択すると､ 球体は再びカプセルに装着されるだけです｡

95
00:08:39,950 --> 00:08:46,010
‫しかし､ 新しいルートを作るを選択すると､ 代わりに球体がルートコンポーネントになります｡

96
00:08:46,550 --> 00:08:54,770
‫ですから､ 新しいコンポーネントの作成とその取り付けをコントロールできるだけでなく､ そのルートコンポーネントを再割り当てすることも可能です｡

97
00:08:55,130 --> 00:09:04,850
‫球体を左クリックで選択し､ 立方体を左クリックで選択し､ deleteを押してこれらのコンポーネントを削除します｡

98
00:09:05,180 --> 00:09:10,520
‫さて､ 今回の課題は､ 設計図の中の部品についてもう少し詳しくなってほしいということです｡

99
00:09:10,520 --> 00:09:12,980
‫アクターにいくつかのコンポーネントを追加します｡

100
00:09:12,980 --> 00:09:17,510
‫すでにカプセルコンポーネントがあり､ それが現在ルートコンポーネントになっています｡

101
00:09:17,510 --> 00:09:23,960
‫静的メッシュコンポーネントを追加し､ その静的メッシュに戦車の基部を割り当て､ 次に2番目の静的メッシュコンポーネントを追加し､

102
00:09:23,960 --> 00:09:27,950
‫その静的メッシュに戦車の砲塔を割り当てます｡

103
00:09:27,980 --> 00:09:34,040
‫カプセルにベースメッシュを取り付け､ ベースメッシュにタレットメッシュを取り付けることを確認してください｡

104
00:09:34,040 --> 00:09:42,800
‫さて､ このようにベースメッシュを移動・拡大縮小して､ 付属のタレットメッシュの挙動を観察したら､ 動画を一時停止して試してみてください｡

105
00:09:45,720 --> 00:09:46,080
‫なるほど｡

106
00:09:46,080 --> 00:09:48,780
‫そこで､ 「Add」をクリックし､ 「Static mesh」を選択します｡

107
00:09:48,780 --> 00:09:53,550
‫次に､ 詳細パネルで､ 静的メッシュをタンクのベースメッシュに設定します｡

108
00:09:53,550 --> 00:09:57,150
‫次に､ 「Add」をクリックして､ 再度､ 静的メッシュを選択します｡

109
00:09:57,150 --> 00:10:03,840
‫最初の静的メッシュに自動的に添付されていることに注意してください｡ これは､ 詳細パネルでまだ選択していたメッシュだからです｡

110
00:10:03,840 --> 00:10:06,840
‫戦車の砲塔に静的メッシュを設定するんです｡

111
00:10:06,870 --> 00:10:15,330
‫さて､ 最初の静的メッシュを選択した状態で､ それを動かしてみると､ それに接続されている2番目の静的メッシュが一緒に動いていることに気づきます｡

112
00:10:15,330 --> 00:10:18,750
‫回転やスケールも同様です｡

113
00:10:18,750 --> 00:10:22,770
‫拡大すると､ 付属のメッシュも大きくなるんです｡

114
00:10:23,130 --> 00:10:30,480
‫ここまで､ コンポーネントについて説明し､ コンポーネントを他のコンポーネントにアタッチする方法､ 移動とスケーリングについて見てきました｡

115
00:10:30,480 --> 00:10:34,290
‫ある部品は､ それに付随する他の部品に影響を与えます｡

116
00:10:34,290 --> 00:10:43,650
‫また､ ポーンはアクタークラスからルートコンポーネントを継承しており､ これがポーンのトランスフォーム情報を格納するオブジェクトであることを確認しました｡

117
00:10:43,980 --> 00:10:48,270
‫C++でコンポーネントを作成する方法と､ これからの講義について学びます｡

118
00:10:48,840 --> 00:10:50,250
‫次の動画でお会いしましょう｡

