﻿1
00:00:04,110 --> 00:00:07,740
‫この講義では､ C++のクラスを作成します｡

2
00:00:07,770 --> 00:00:11,310
‫さて､ ポーンに使えるクラスが必要です｡

3
00:00:11,340 --> 00:00:15,720
‫今､ ポーンと複数で言っているのは､ このゲームには2種類のポーンが登場するからです｡

4
00:00:15,720 --> 00:00:20,280
‫レベル内を転がるのに使う戦車と､ 敵となる砲台があるので､

5
00:00:20,280 --> 00:00:24,870
‫ベースとなるポーンクラスを作成します｡

6
00:00:24,870 --> 00:00:30,050
‫そして､ これには戦車と砲塔が共有する基本的な機能が搭載される予定です｡

7
00:00:30,060 --> 00:00:34,890
‫そして､ この方法で2つの子クラス､ 戦車と砲塔を作成することができます｡

8
00:00:34,890 --> 00:00:40,890
‫つまり､ ポーンの基本クラスから品質を継承し､ メッシュ､ カプセルコンポーネント､

9
00:00:40,890 --> 00:00:47,820
‫発射装置など､ 両ポーンに共通する機能を持たせているのです｡

10
00:00:47,820 --> 00:00:51,840
‫さて､ このビデオについては､ 今後のビデオでそれらの機能をすべて紹介する予定です｡

11
00:00:51,840 --> 00:00:56,280
‫C++のクラスを作成し､ 基本的な変数を追加するだけです｡

12
00:00:56,280 --> 00:01:00,990
‫これが､ 私たちが初めてC++のクラスを作成した動機です｡

13
00:01:01,020 --> 00:01:06,450
‫さて､ このプロジェクトで使う C++ クラスの作成を開始する準備ができました｡

14
00:01:06,630 --> 00:01:13,410
‫このコンテンツブラウザには､ C++クラス用のフォルダがないことがおわかりいただけると思います｡

15
00:01:13,410 --> 00:01:22,140
‫まだ何も作成していないからです｡ これから作成するので､ ツールから新しいC++クラスを選択します｡

16
00:01:22,140 --> 00:01:27,690
‫そしてここで､ これから作成するクラスの親クラスを選択することになります｡

17
00:01:27,690 --> 00:01:31,740
‫そして､ デフォルトでは､ ここにいくつかのオプションが用意されており､ そこから選択することができます｡

18
00:01:31,740 --> 00:01:35,330
‫これは､ これまでの講義で見てきたはずのことです｡

19
00:01:35,330 --> 00:01:38,280
‫さて､ ここでいくつかの決断を迫られることになります｡

20
00:01:38,370 --> 00:01:41,550
‫ひとつには､ どの親クラスを選ぶか？

21
00:01:41,550 --> 00:01:42,210
‫持っています｡

22
00:01:42,210 --> 00:01:43,860
‫1つ目はなし｡

23
00:01:43,860 --> 00:01:50,910
‫そうすると､ 基本的には普通のC++のクラスを作ることができるのですが､ いくつかの追加機能が必要になります｡

24
00:01:50,910 --> 00:01:55,440
‫ひとつは､ このオブジェクトのインスタンスをワールドに配置できるようにしたい｡

25
00:01:55,440 --> 00:01:58,230
‫だから､ 普通のC++のクラスではできないんだ｡

26
00:01:58,230 --> 00:02:05,250
‫キャラクターでもポーンでも俳優でもいいのですが､ やりたいことに一番適しているのはどれなのか｡

27
00:02:05,400 --> 00:02:10,020
‫さて､ ここで一歩踏み込んで､ 私たちは一体何を作ろうとしているのか､ 考えてみる必要がありますね｡

28
00:02:10,050 --> 00:02:17,460
‫私たちは､ コントロールできるタンクを作り､ レベル内を移動させ､ 投射物を発射してダメージを与えるなど､

29
00:02:17,460 --> 00:02:21,570
‫さまざまなことをアセットフォルダで行おうとしています｡

30
00:02:21,570 --> 00:02:28,770
‫念のためお伝えしておきますが､ このメッシュフォルダには､ 戦車のベースと砲塔があります｡

31
00:02:28,800 --> 00:02:32,670
‫この2つのメッシュは､ 私たちのクラスで使用される予定です｡

32
00:02:32,670 --> 00:02:35,640
‫そのため､ メッシュを持つ機能が必要なのです｡

33
00:02:35,640 --> 00:02:39,270
‫そして､ 素のC++クラスにはそのような能力はないわけです｡

34
00:02:39,540 --> 00:02:41,670
‫そこで､ ちょっと考えてみましょう｡

35
00:02:41,670 --> 00:02:44,250
‫どのような親クラスを使用すればよいのでしょうか？

36
00:02:44,250 --> 00:02:48,780
‫さて､ 最初に思い浮かべるべきクラスは､ おそらく俳優クラスでしょう｡

37
00:02:48,780 --> 00:02:52,320
‫さて､ アクタークラスは､ 世界に配置できる機能を備えています｡

38
00:02:52,320 --> 00:02:53,850
‫というわけで､ 素晴らしいスタートとなりました｡

39
00:02:53,940 --> 00:02:57,750
‫また､ 視覚的な表現が可能なことも特徴です｡

40
00:02:57,750 --> 00:03:07,650
‫それがメッシュであろうと何であろうと､ メッシュを与えることを前提に､ 世界に配置すれば実際に見ることができるのです｡

41
00:03:07,650 --> 00:03:13,260
‫アクターの派生クラスとして -- クラスがありますが､ これはアクタークラスの性質をすべて受け継ぎ､

42
00:03:13,260 --> 00:03:19,830
‫さらにコントローラによって所有される性質も持っています｡

43
00:03:19,830 --> 00:03:30,060
‫このポゼッションについては､ 後で詳しく説明しますが､ 今は「--をプレイヤーが操作できる」ということだけ理解しておいてください｡

44
00:03:30,060 --> 00:03:38,580
‫ですから､ マウスのボタンやキーボードのキーを押しているのであれば､ これを設定することで､ --を動かすことができるようになります｡

45
00:03:38,580 --> 00:03:43,110
‫だから､ これはぜひとも我が家の水槽に欲しいもののような気がします｡

46
00:03:43,110 --> 00:03:49,410
‫つまり､ 移動の入力を処理することで､ --は--クラスから派生して､ --が持つすべてのものと､

47
00:03:49,410 --> 00:03:56,880
‫--が親クラスから継承したすべてのものを受け継ぐことになり､ かなり良い選択のように思えるのです｡

48
00:03:56,880 --> 00:04:02,100
‫キャラクタークラスがあり､ キャラクター特有のものがあります｡

49
00:04:02,460 --> 00:04:05,550
‫例えば､ キャラクターの移動要素というものがあります｡

50
00:04:05,550 --> 00:04:07,830
‫今､ ......は､ これを持っていない｡

51
00:04:07,860 --> 00:04:13,980
‫キャラクターの移動パーツは､ 飛んだり､ 泳いだり､ しゃがんだりといった移動モードや､ キャラクター特有のものなど､

52
00:04:13,980 --> 00:04:19,440
‫キャラクターにプラスアルファの能力を与えるものです｡

53
00:04:19,440 --> 00:04:28,410
‫キャラクタークラスは二足歩行のキャラクターには向いていて､ 二足歩行でないキャラクター物にはあまり効果がないでしょう｡

54
00:04:28,410 --> 00:04:34,050
‫また､ 戦車がレベル内を飛び回り､ 目に入るもの全てに爆弾を落とすというのは､ とても素晴らしいことですが､

55
00:04:34,050 --> 00:04:38,940
‫このセクションでは､ そこまで複雑なことは行いません｡

56
00:04:38,940 --> 00:04:41,040
‫転がせる戦車を作ればいいんです｡

57
00:04:41,040 --> 00:04:47,220
‫だから､ キャラクターの移動要素とか､ そういう特殊なキャラクター特有のものは本当に必要ないんです｡

58
00:04:47,220 --> 00:04:52,380
‫ですから､ 私たちが目指すものには､ 「--」がぴったりだと思うのです｡

59
00:04:52,380 --> 00:05:01,230
‫そこで､ 新しいC++のクラスを作り､ --をベースにしたクラスを作り､ この新しいクラスに--をベースにした名前を付けることに挑戦してみようと思います｡

60
00:05:01,230 --> 00:05:03,600
‫これで､ すべての設定をそのままにしておくことができます｡

61
00:05:03,670 --> 00:05:05,200
‫クラス作成ウィザードで

62
00:05:05,200 --> 00:05:13,030
‫ファイルパスなどを変更する必要はありませんので､ ビデオを一時停止して､ このプロジェクトで最初のC++クラスを作成してください｡

63
00:05:16,320 --> 00:05:18,090
‫で､ このレベルに戻ると｡

64
00:05:18,120 --> 00:05:21,690
‫では､ ツールでC++のクラスを新規に作成してみましょう｡

65
00:05:21,690 --> 00:05:24,260
‫C++のクラスはまだ作っていません｡

66
00:05:24,270 --> 00:05:27,180
‫このスライドに戻るために､ ちょうどこれを閉じたところです｡

67
00:05:27,180 --> 00:05:33,480
‫でも､ もう戻ったからには､ このプロジェクトで最初のC++クラスを作る準備ができたので､ これを選択するつもりです

68
00:05:33,480 --> 00:05:36,720
‫-- この上にマウスを置くたびに､ それがわかると思います｡

69
00:05:36,720 --> 00:05:38,370
‫ご覧になったことがある方も多いのではないでしょうか｡

70
00:05:38,400 --> 00:05:45,660
‫ツールチップがポップアップして､ 「--は､ プレイヤーが所有できるすべてのアクターの基本クラスです」と表示されるんです｡

71
00:05:45,660 --> 00:05:53,370
‫あるいは､ かなり刺激的な話だと思いますが､ これをプレイヤーからの入力で動かせるように構成していくのです｡

72
00:05:53,370 --> 00:05:55,380
‫だから､ これは完璧なんです｡

73
00:05:55,470 --> 00:06:01,020
‫さらに､ レベル内のプレイヤーやクリーチャーを物理的に表現したものである､ と書かれています｡

74
00:06:01,020 --> 00:06:07,080
‫つまり､ この戦車を作れば､ 私たちプレイヤーの代表として世界に出ていくことになるのです｡

75
00:06:07,080 --> 00:06:07,950
‫かなりイケてますね｡

76
00:06:08,040 --> 00:06:15,960
‫このクラスをプロジェクトに組み込むためのパスが表示され､ ソーススラッシュのtune

77
00:06:15,960 --> 00:06:20,070
‫tanksにあることがわかります｡

78
00:06:20,070 --> 00:06:26,280
‫さて､ 私たちは新しい名前をつけたいと思います｡ なぜなら､ 私の...は恐ろしい名前だし､ とても曖昧だからです｡

79
00:06:26,280 --> 00:06:29,700
‫今はもう少し具体的なものが必要です｡

80
00:06:29,700 --> 00:06:38,340
‫つまり､ このクラスからクラスを派生させ､ このベースとなるクラスを呼び出すことができるようにします｡

81
00:06:38,340 --> 00:06:43,080
‫でも､ これはベースとなる......ということなんです｡

82
00:06:43,080 --> 00:06:46,770
‫これは､ 将来的に子クラスを派生させるものです｡

83
00:06:46,770 --> 00:06:47,730
‫それは､ これからです｡

84
00:06:47,730 --> 00:06:52,320
‫しかし､ とりあえず､ これを base と呼ぶことにします -- そして､ Create Class をクリックします｡

85
00:06:53,930 --> 00:06:54,590
‫わかりました｡

86
00:06:54,590 --> 00:06:58,340
‫つまり､ Visual Studioのコードは､ 新しいクラスによって開放されたのです｡

87
00:06:58,340 --> 00:07:01,700
‫Hをベースにしたものと､ CPをベースにしたものがあります｡

88
00:07:01,730 --> 00:07:09,890
‫エクスプローラーのアイコンをクリックして､ このサイドバーを閉じれば､ Vのコードで生成されたものを見ることができるようになります｡

89
00:07:09,890 --> 00:07:18,380
‫そのため､ デフォルトでは､ クラスのコンストラクタと､ begin､ play､ tickの3つの関数､ およびプレーヤーの入力コンポーネントを設定するようになっています｡

90
00:07:18,410 --> 00:07:21,980
‫これで「Begin」「Play」を熟知し､ ここのコメントにも目を通してください｡

91
00:07:21,980 --> 00:07:23,300
‫何をするのか説明する｡

92
00:07:23,330 --> 00:07:28,790
‫Set up player input componentはポーンが取得するもので､ この機能によりキーボードのキーやマウスのクリックなどの入力を処理することができます｡

93
00:07:28,790 --> 00:07:35,690
‫この仕組みについては､ 今後のビデオでベースバンドで詳しく説明します｡

94
00:07:35,840 --> 00:07:42,740
‫CP これらの機能は私たちのために定義されたものですが､ かなり素っ気ないもので､ 今後のビデオでもそれは変わりません｡

95
00:07:42,740 --> 00:07:51,770
‫このビデオでは､ 最初のC++クラスを作成しました｡ 次のビデオでは､ コンポーネントと､ なぜ新しいクラスにコンポーネントを追加したいのかについて説明します｡

96
00:07:51,800 --> 00:07:52,790
‫また､ お会いしましょう｡

