﻿1
00:00:04,400 --> 00:00:05,510
‫こんにちは､ ようこそ｡

2
00:00:05,510 --> 00:00:16,340
‫このレクチャーでは､ 小さな障害物用アサルトコースを作り､ キャラクターを押し出すための小さなプッシャープラットフォームを実装していきます｡

3
00:00:16,340 --> 00:00:22,250
‫これを実現するためには､ キャラクタークラスにちょっとした修正を加える必要があります｡

4
00:00:22,250 --> 00:00:24,650
‫では､ どんなものなのか､ 飛び込みで見てみましょう｡

5
00:00:25,340 --> 00:00:32,390
‫そこで､ この「動くプラットフォーム」という基本的な要素を使ったもうひとつのパズルとして､ 「プッシャー」と呼ばれる､

6
00:00:32,390 --> 00:00:35,690
‫棚から突き落とすような仕掛けを考えています｡

7
00:00:35,870 --> 00:00:39,470
‫さて､ このようにするには､ ここにある立方体を使います｡

8
00:00:39,470 --> 00:00:45,770
‫パズルキューブAというのがあると思うんですが､ あれは本来プッシャーとなる立方体でもいいんです｡

9
00:00:45,770 --> 00:00:50,360
‫そして､ ムービングプラットフォームとは少し違った構成にします｡

10
00:00:50,360 --> 00:01:00,380
‫右クリックして､ 「ここに移動」をクリックすると､ カメラにピントが合うようになります｡

11
00:01:00,800 --> 00:01:08,360
‫そして､ コンテンツに移動し､ C++クラスに移動し､ 検索をクリックし､ Obstacle Saltに移動し､ 移動プラットフォームを右クリックし､

12
00:01:08,360 --> 00:01:12,410
‫それを基に新しいブループリント・クラスを作成します｡

13
00:01:12,410 --> 00:01:18,110
‫今回はBPアンダースコアのプッシングキューブみたいなのを呼んでみます｡

14
00:01:18,110 --> 00:01:22,580
‫そこで､ コンテンツのルートに入れ､ Create Blueprint Classをクリックします｡

15
00:01:22,790 --> 00:01:24,140
‫これでコンテンツブラウザを閉じることができる｡

16
00:01:24,140 --> 00:01:29,510
‫なぜかあれを出したがるので､ コンテンツの引き出しから､

17
00:01:29,510 --> 00:01:36,500
‫コンテンツのルートに行き､ パズルキューブとか一言で検索しています｡

18
00:01:36,530 --> 00:01:38,390
‫アヤ それはこちらのメッシュのことですね｡

19
00:01:38,390 --> 00:01:46,640
‫ブループリント・クラスにドラッグインして､ コンテンツを閉じて､ コンパイル結果を閉じて､ ビューポートをもう少しよく見えるようにするつもりです｡

20
00:01:46,760 --> 00:01:50,690
‫そして､ このキューブはデフォルトではかなり小さいので､ 実はスケールアップしたいのです｡

21
00:01:50,690 --> 00:01:54,230
‫あらゆる次元で少なくとも10倍は大きくするつもりです｡

22
00:01:54,230 --> 00:02:01,220
‫そこで､ scaleプロパティの横にある小さな南京錠を押して､ それぞれのスケールが基本的に同じになるようにします｡

23
00:02:01,220 --> 00:02:05,930
‫そして､ そのうちの1つを10に変更し､ 残りの2つも同様に10にスケールアップすることにしています｡

24
00:02:06,320 --> 00:02:10,220
‫そして､ これからやることは､ 移動の方向を変えることです｡

25
00:02:10,220 --> 00:02:12,830
‫つまり､ 現在はXの方向に動いているわけです｡

26
00:02:12,830 --> 00:02:16,100
‫そして､ このシーンを見ると､ それが基本的に順方向であることがわかります｡

27
00:02:16,100 --> 00:02:17,540
‫左右に動かしたい｡

28
00:02:17,540 --> 00:02:22,160
‫もちろん､ シーンに入れた後に回転させればそれほど問題にはなりませんが､

29
00:02:22,160 --> 00:02:30,440
‫Xをゼロに変更し､ 避けるべき障害物であるためには､ それなりの速度が必要なのです｡

30
00:02:30,440 --> 00:02:35,450
‫だから､ 300にして､ 移動距離もかなり大きくしようと思っているんです｡

31
00:02:35,450 --> 00:02:38,000
‫だから､ まずは最低でも500枚にしようと思っています｡

32
00:02:38,000 --> 00:02:42,620
‫そしてもちろん､ これをレベル内に配置した後､ 再度設定することができます｡

33
00:02:42,620 --> 00:02:47,630
‫では､ これを保存して､ レベルに入って､ このキューブを配置してみましょう｡

34
00:02:47,630 --> 00:02:53,720
‫コンテンツのドローで検索をキャンセルして､ コンテンツのルートに行き､ プッシングキューブをドラッグしてみます｡

35
00:02:53,720 --> 00:02:55,010
‫絶対的な質量がある｡

36
00:02:55,010 --> 00:02:56,930
‫確かに目盛りは大きくずれてしまいましたね｡

37
00:02:56,930 --> 00:03:00,530
‫では､ CubeでプッシュするためのBlueprintクラスに戻りましょう｡

38
00:03:00,560 --> 00:03:07,940
‫scaleプロパティを見て､ 多分4倍にしたいだけなんだろうけど､ このスケールロックをオンにしてやっていることに注意｡

39
00:03:07,940 --> 00:03:13,430
‫だから､ あらゆる次元で4倍の大きさにして､ レベルの中に戻っていくんです｡

40
00:03:13,430 --> 00:03:15,560
‫そして､ これはもうかなり合理的に見えてきました｡

41
00:03:15,560 --> 00:03:18,530
‫だから､ 実際に少し地面に食い込んでいるのがわかると思います｡

42
00:03:18,560 --> 00:03:31,010
‫つまり､ ワールドでキューブを持ち上げて解決することもできますし､ Pushing Cubeクラスで実際にキューブを持ち上げて解決することもできるのです｡

43
00:03:31,010 --> 00:03:34,490
‫だから､ それくらいは持ち上げないといけないと思うんです｡

44
00:03:34,490 --> 00:03:37,040
‫ドラッグアップを始めて､ まともに見えるものを見てみよう｡

45
00:03:37,040 --> 00:03:40,610
‫200ぐらいで接地面に置くと思います｡

46
00:03:41,090 --> 00:03:44,000
‫それを保存して､ 元のシーンに戻ります｡

47
00:03:44,000 --> 00:03:44,600
‫そして､ そこにあるのは

48
00:03:44,600 --> 00:03:46,340
‫正しそうです｡

49
00:03:46,340 --> 00:03:49,520
‫あとは､ プレーヤーと重なるように移動させるだけです｡

50
00:03:49,850 --> 00:03:52,840
‫再生ボタンを押してみると､ 前後に動いているのがわかると思います｡

51
00:03:52,840 --> 00:03:55,100
‫後ろにも後ろにもあまり動いていない｡

52
00:03:55,100 --> 00:03:56,750
‫だから､ それを変える必要があると思うんです｡

53
00:03:56,750 --> 00:04:02,270
‫クラスに戻って､ クラス､ デフォルト､ 移動距離にしてみましょう｡

54
00:04:02,270 --> 00:04:06,680
‫そうやって最低でも1500は必要だと思うんです｡

55
00:04:06,680 --> 00:04:12,980
‫また､ 好みの問題かもしれませんが､ 移動方向を反対に設定したい場合もあります｡

56
00:04:12,980 --> 00:04:19,520
‫そこで､ メインウィンドウに戻り､ キューブを左側にドラッグしてみましょう｡

57
00:04:19,940 --> 00:04:20,720
‫再生ボタンを押してみましょう｡

58
00:04:20,720 --> 00:04:21,560
‫そして､ そこに行く｡

59
00:04:21,560 --> 00:04:24,290
‫非常にゆっくりと過ぎていきます｡

60
00:04:24,290 --> 00:04:26,240
‫だから､ スピードに不満があるんです｡

61
00:04:26,270 --> 00:04:28,220
‫そのスピードを変えてみよう｡

62
00:04:28,220 --> 00:04:29,990
‫最低でも3倍速は必要だと思います｡

63
00:04:30,000 --> 00:04:32,060
‫では､ 900回のヒットプレイにしましょう｡

64
00:04:32,060 --> 00:04:32,780
‫そして､ そこにあるのは

65
00:04:32,780 --> 00:04:35,120
‫もう少しの辛抱です｡

66
00:04:35,120 --> 00:04:37,790
‫しかし､ バグも発生しています｡

67
00:04:37,800 --> 00:04:43,730
‫私たちのキャラクターは､ このプッシングキューブによって､ あまり理にかなった､ いい意味で押されないんです｡

68
00:04:43,730 --> 00:04:45,080
‫グリッチしているのがわかりますね｡

69
00:04:45,080 --> 00:04:46,790
‫スムーズじゃないんです｡

70
00:04:46,820 --> 00:04:50,180
‫しかし､ ちょっとした回避策にご注目いただきたい｡

71
00:04:50,180 --> 00:04:56,780
‫ぶつかっている間に移動しようとすると､ 実はとてもスムーズにできていることに気づきますが､

72
00:04:56,780 --> 00:05:03,650
‫これは､ 文字コードが､ 移動しようとしない限り､ 実際には衝突をチェックしないからです｡

73
00:05:03,870 --> 00:05:07,460
‫そこで､ ちょっとした回避策があるんです｡

74
00:05:07,470 --> 00:05:11,930
‫これから作成したBPの三人称キャラクターを見に行きます｡

75
00:05:11,940 --> 00:05:17,220
‫コンテンツ ドローを使用するか､ シーンでキャラクタを選択し､ 詳細ペインでブループリント

76
00:05:17,220 --> 00:05:22,680
‫ボタンをクリックし､ 「Open Blueprint Editor」をクリックします｡

77
00:05:23,130 --> 00:05:33,090
‫そして､ 基本的に1目盛りごとに､ キャラクターを少し左に動かし､ 少し右に戻すということを行いたいのです｡

78
00:05:33,090 --> 00:05:39,150
‫さて､ この方法では､ キャラクタ移動コンポーネントと呼ばれるキャラクタ上のコンポーネントを使用します｡

79
00:05:39,150 --> 00:05:45,360
‫コンポーネントペインでこれを選択し､ ブループリントのイベントグラフで右クリックし､

80
00:05:45,360 --> 00:05:49,290
‫更新されたコンポーネントを移動するを検索します｡

81
00:05:50,220 --> 00:05:53,580
‫基本的にこの関数が行うことは､ 指示することである｡

82
00:05:54,360 --> 00:06:01,350
‫キャラクタを移動させるために､ そのキャラクタ移動ルールを使用する必要があることを移動コンポーネント｡

83
00:06:01,800 --> 00:06:08,640
‫このように､ 基本的には「これだけ動けばいい」というデルタをとっていることがわかります｡

84
00:06:08,790 --> 00:06:16,350
‫そして､ 途中で衝突しないように注意するスイープを搭載しています｡

85
00:06:16,530 --> 00:06:23,610
‫だから､ 基本的にXとYに1センチずつ､ 非常に素直な動きをさせることができます｡

86
00:06:23,640 --> 00:06:28,320
‫Z軸で動くかどうかはあまり重要ではなく､ そのような衝突は求めていないからです｡

87
00:06:28,650 --> 00:06:34,050
‫次に､ ティックを取り､ 実行ピンを移動にドラッグします｡

88
00:06:34,050 --> 00:06:35,370
‫コンポーネントを更新しました｡

89
00:06:35,700 --> 00:06:41,480
‫そして､ このままにしておくと､ だんだんとキャラクターが流れていってしまうという問題があるのです｡

90
00:06:41,490 --> 00:06:43,410
‫再生を押すと見せてくれる｡

91
00:06:43,860 --> 00:06:50,450
‫キャラクターが徐々に1cmずつコマ送りされ､ シーン上を漂っているのがわかる｡

92
00:06:50,460 --> 00:06:53,660
‫だから､ 私たちがやるべきことは､ 後ろへ下がることでもあるのです｡

93
00:06:53,670 --> 00:07:00,840
‫そこで､ キャラクターの移動コンポーネントをここにドラッグして､ もう一度このピンからドラッグして､ 移動先をもう一度探してみます｡

94
00:07:00,840 --> 00:07:02,430
‫コンポーネントを更新しました｡

95
00:07:02,580 --> 00:07:08,520
‫実行ピンをスレッド化して､ 最初の移動更新コンポーネントの後に呼ばれるようにするんだ｡

96
00:07:08,520 --> 00:07:14,880
‫そして､ デルタをXでマイナス1､ Yでマイナス1にするんです｡

97
00:07:14,910 --> 00:07:21,330
‫そのため､ 最終的には何も起きていないように見えますが､ スイープとの衝突を探すように動作コンポーネントを強制しているため､

98
00:07:21,330 --> 00:07:28,250
‫プッシャーに対してスムーズに反応するようになります｡

99
00:07:28,260 --> 00:07:33,840
‫では､ 再生ボタンを押して､ プッシャーの行く手に立ちはだかりましょう｡

100
00:07:34,020 --> 00:07:39,440
‫そして､ このように､ 私たちはとてもスムーズに邪魔をすることができるのです｡

101
00:07:39,450 --> 00:07:47,790
‫そこで､ このプッシャーとムービングプラットフォームの部品を使って､ 自分だけの障害物コースを作ってみることに挑戦してみたいと思います｡

102
00:07:47,820 --> 00:07:52,350
‫そこで､ 試作品で作った障害物コースの例を紹介します｡

103
00:07:52,350 --> 00:07:59,970
‫この島をプラットフォームとして使用し､ 縮小することができます｡

104
00:07:59,970 --> 00:08:04,610
‫そして､ その間を縫うように､ プッシャーが前後左右に動いているんです｡

105
00:08:04,620 --> 00:08:07,350
‫そして､ 回転台ですが､ これは後ほど紹介します｡

106
00:08:07,350 --> 00:08:08,190
‫だから､ 心配しないでください｡

107
00:08:08,190 --> 00:08:12,060
‫でも､ このプッシャーもあるし､ 動くプラットフォームもあるんだから､ やってみればいいんだよ｡

108
00:08:12,060 --> 00:08:16,680
‫これを真似てみてもいいし､ もしクリエイティブな気分で何か違うことをやってみたいなら､

109
00:08:16,680 --> 00:08:22,260
‫ぜひ自分だけの障害物コースを作ってみてください｡

110
00:08:22,260 --> 00:08:28,920
‫そして､ もしあなたが何かユニークなものを作ったら､ それをディスカッションで共有して､ みんなで見て刺激を受けましょう｡

111
00:08:28,920 --> 00:08:30,870
‫では､ ビデオを一時停止して､ やってみてください｡

112
00:08:33,820 --> 00:08:34,450
‫なるほど｡

113
00:08:34,450 --> 00:08:35,260
‫お帰りなさい｡

114
00:08:35,260 --> 00:08:40,730
‫さて､ プッシャーが使えるようになったところで､ ちょっと面白いものを作ってみましょうか｡

115
00:08:40,750 --> 00:08:44,080
‫そこで､ このプラットフォームを実際に回転させてみることにします｡

116
00:08:44,080 --> 00:08:50,710
‫だから､ 私たちのセットアップにはもう少し長さが必要で､ それを引きずっていくつもりです｡

117
00:08:50,710 --> 00:08:57,160
‫キャラクターはプラットフォームの端にいるわけですが､ この2つの動くプラットフォームを､

118
00:08:57,160 --> 00:08:59,560
‫次々と配置していきます｡

119
00:08:59,560 --> 00:09:10,180
‫そして､ そのうちの1つは､ Z軸に1000を追加して､ 反対方向に移動させるつもりです｡

120
00:09:10,180 --> 00:09:13,990
‫ですから､ この2つのプラットフォームは､ どこか真ん中あたりで出会うはずです｡

121
00:09:14,050 --> 00:09:17,890
‫そして､ 今立っている浮島を複製します｡

122
00:09:17,890 --> 00:09:24,670
‫Alt キーを押しながらドラッグすると､ 同じプラットフォームがすぐに見えなくなるので､

123
00:09:24,670 --> 00:09:34,030
‫回転させます｡

124
00:09:34,030 --> 00:09:42,760
‫なぜなら､ 最終的に私が望むのは､ この上のプラットフォームの上に乗ったら､ 死なないように押し倒されることだからです｡

125
00:09:42,760 --> 00:09:45,190
‫しかし､ そのせいで少し挫折してしまう｡

126
00:09:45,280 --> 00:09:47,110
‫さて､ このプッシャーキューブを

127
00:09:47,110 --> 00:09:52,630
‫実際に上のプラットフォームに引きずり込むだけです｡

128
00:09:52,840 --> 00:09:54,190
‫何個か入れてみる｡

129
00:09:54,190 --> 00:09:58,810
‫だから､ 当面は3つで十分だと思います｡ 1つを反対側にドラッグして､

130
00:09:58,810 --> 00:10:03,190
‫その速度をこんな風に反転させます｡

131
00:10:03,190 --> 00:10:07,870
‫つまり､ 9ではなく､ -900となり､ 逆方向へ進むことになるのです｡

132
00:10:08,080 --> 00:10:12,400
‫試しに､ この動く台の上に乗ってみようか｡

133
00:10:12,400 --> 00:10:19,750
‫そのおかげで､ ちょっとだけハシゴをかけることができた｡ あとは､ この人たちを抜くだけだ｡

134
00:10:19,750 --> 00:10:25,390
‫また､ 面白いことに､ キャラクターを強制的に動かす方法について､ ちょっとしたバグがあることに気づきましたので､

135
00:10:25,390 --> 00:10:27,670
‫すぐに説明します｡

136
00:10:27,880 --> 00:10:30,640
‫でもね､ ちょっと難しいけど､ できるんですよ｡

137
00:10:30,640 --> 00:10:31,840
‫それらを確実にクリアすることができました｡

138
00:10:31,840 --> 00:10:36,190
‫今はまだあまりうまくできていませんが､ その気になればあのキューブも間違いなくクリアできるはずです｡

139
00:10:36,190 --> 00:10:39,310
‫だから､ 次にやるべきことは､ その小さなバグを修正することです｡

140
00:10:39,670 --> 00:10:47,170
‫ここで問題なのは､ 更新されたコンポーネントの移動を呼び出したときに､ キャラクタの回転とは異なる回転をここに設定していることです｡

141
00:10:47,170 --> 00:10:52,330
‫つまり､ 常に前方を向くように配置されることになります｡

142
00:10:52,510 --> 00:11:02,620
‫この問題を解決する簡単な方法は､ 右クリックしてアクターの回転を取得し､ アクターの回転を新しい回転に渡すだけで､ 4つのMove Updated

143
00:11:02,620 --> 00:11:05,950
‫Componentができます｡

144
00:11:05,950 --> 00:11:09,970
‫しかし､ 本当に重要なのは､ 最後の1つに対してそれを行うことです｡

145
00:11:09,970 --> 00:11:18,670
‫ですから､ 今すぐプレイして､ 私たちが実際に適切にキャラクターを回転できることを確認することができるはずです｡

146
00:11:18,880 --> 00:11:19,900
‫いやー､ 素晴らしい内容ですね｡

147
00:11:19,900 --> 00:11:31,270
‫このレクチャーでは､ キャラクターの衝突に関するちょっとしたバグを修正し､ ちょっとした障害物のあるアサルトコースを用意しました｡

148
00:11:31,270 --> 00:11:33,850
‫楽しんでいただけたでしょうか？また､ 次の講義でお会いしましょう｡

