﻿1
00:00:04,390 --> 00:00:05,560
‫こんにちは､ ようこそ｡

2
00:00:05,560 --> 00:00:11,230
‫この講義では､ 移動するプラットフォームだけでなく､ 回転するプラットフォームも作る予定です｡

3
00:00:11,230 --> 00:00:20,950
‫C++のF rotator型について学ぶことで､ 私たちのパズルにもう少し別の要素を加えることができるようになります｡

4
00:00:20,950 --> 00:00:23,950
‫では､ その仕組みについてご紹介しましょう｡

5
00:00:24,280 --> 00:00:28,300
‫では､ 回転台機能の記入について説明します｡

6
00:00:28,510 --> 00:00:35,350
‫ですから､ ローテーションを行うためには､ 位置情報を行う方法と非常に似ていて､ 機能も非常に似ているんです｡

7
00:00:35,350 --> 00:00:43,240
‫アクターの位置を取得する代わりに､ アクターの回転を取得することができます｡

8
00:00:43,240 --> 00:00:55,630
‫この行の最後に括弧を付けて関数の上にマウスを置くと､ Visual Studio IntelliSenseがこの関数の戻り値がFローテータであることを表示してくれるのです｡

9
00:00:55,630 --> 00:01:02,830
‫ロケーションを扱うときにFベクトルを使い､ ローテーターについては前のセクションで説明しました｡

10
00:01:02,830 --> 00:01:07,090
‫では､ このFローテータをローカル変数に入れるところを見てみましょう｡

11
00:01:07,090 --> 00:01:14,920
‫つまり､ 型はF rotatorとし､ これを現在の回転とアクターの回転の取得を等しいと呼び､

12
00:01:14,920 --> 00:01:17,680
‫行末にセミコロンを付けます｡

13
00:01:17,680 --> 00:01:20,260
‫また､ log文も不要になったので削除することにします｡

14
00:01:20,260 --> 00:01:31,810
‫これは､ 回転速度に現在の回転に加えられたデルタ時間を掛けたものです｡

15
00:01:31,810 --> 00:01:35,470
‫では､ その回転速度はどうあるべきなのか｡

16
00:01:35,470 --> 00:01:39,520
‫そこで､ ヘッダファイルに移動して､ 新しいUプロパティを追加したいと思います｡

17
00:01:39,520 --> 00:01:48,760
‫そこで､ 移動距離の下に追加して､ Uプロパティをどこでも編集できるようにして､ カテゴリーを今回は回転と同じにして､

18
00:01:49,300 --> 00:02:00,100
‫カテゴリー名を移動プラットフォームから両方のインスタンスで移動に変更します｡

19
00:02:00,100 --> 00:02:03,850
‫そこで､ 移動のためのカテゴリー､ 回転のためのカテゴリーを用意することにしました｡

20
00:02:03,850 --> 00:02:16,780
‫デフォルトでは､ どのプラットフォームも回転させたくないので､ ここではデフォルト値を与えるつもりはありません｡

21
00:02:16,780 --> 00:02:21,190
‫つまり､ デフォルト値は000になるわけですが､ これはまさに私たちが必要としているものです｡

22
00:02:21,280 --> 00:02:26,470
‫この行の最後にセミコロンをつけて､ C++ファイルに戻り､ このメンバ変数をrotate

23
00:02:26,470 --> 00:02:31,330
‫platform関数で使用できるようにします｡

24
00:02:31,330 --> 00:02:42,610
‫そこで､ 現在の回転に回転速度を加えたものにデルタ時間をかけたものを現在の回転とし､

25
00:02:42,610 --> 00:02:46,750
‫行末にセミコロンを付けます｡

26
00:02:46,900 --> 00:02:52,660
‫そして､ パズルの最後のピースは､ アクターを新しい回転に設定することです｡

27
00:02:52,660 --> 00:03:00,130
‫ですから､ まさにご期待に沿うように､ 実はあなたにとってちょっとしたミニ・チャレンジかもしれませんが､ それをどうやって自分で進めていくのか｡

28
00:03:01,970 --> 00:03:10,430
‫そこで､ アクターの回転を設定する関数を使い､ 現在の回転を引数として以下のように渡し､

29
00:03:10,430 --> 00:03:14,930
‫行末にセミコロンを付けます｡

30
00:03:14,960 --> 00:03:19,160
‫さて､ 残念ながら､ このように簡単にはいきません｡

31
00:03:19,310 --> 00:03:22,190
‫ティーチングアシスタントで指摘された学生もいて､ 注目されています｡

32
00:03:22,190 --> 00:03:27,920
‫Danは､ このようにローテーションを足すだけでは､ ローテーションが自分自身に巻きついてしまうため､

33
00:03:27,920 --> 00:03:32,710
‫必ずしもうまくいかないことを指摘してくれて､ ありがとうございました｡

34
00:03:32,720 --> 00:03:38,870
‫90度回転まで行ったら､ どこかでプラス90度回転に反転させないといけない､

35
00:03:38,870 --> 00:03:41,070
‫といった具合に｡

36
00:03:41,090 --> 00:03:50,540
‫そこで､ これを回避する良い方法は､ アクティブな回転を設定する代わりに､ アクターのローカル回転を追加することを呼び出すことです｡

37
00:03:50,540 --> 00:03:57,830
‫また､ アクターローカルトランスフォームやローカルオフセット（位置情報）も追加されています｡

38
00:03:57,830 --> 00:04:00,920
‫だから､ ロケーションを追加する代わりに､ それも使うことができる｡

39
00:04:00,920 --> 00:04:06,380
‫しかし､ 回転周りのエッジケースで遭遇するような問題はないのです｡

40
00:04:06,380 --> 00:04:12,800
‫そこで､ 代わりにアクターローカルローテーションを追加し､ 回転速度にデルタ時間をかけたものを入力すれば､

41
00:04:12,800 --> 00:04:19,670
‫残りのコードは自動的に実行されます｡

42
00:04:19,670 --> 00:04:22,100
‫だから､ このままその線を消してしまえばいいんです｡

43
00:04:22,100 --> 00:04:27,560
‫また､ 現在の回転を得るための機能も不要になったので､

44
00:04:27,560 --> 00:04:31,670
‫これを取り除くこともできます｡

45
00:04:31,850 --> 00:04:35,450
‫では､ エディタに向かって､ コンパイルボタンを押しましょう｡

46
00:04:35,450 --> 00:04:37,520
‫そして､ それが終わったら､ ログを閉じる｡

47
00:04:37,640 --> 00:04:42,530
‫どれでもいいというレベルのプラットフォームを選んで､ カテゴリーを見てみましょう｡

48
00:04:42,530 --> 00:04:46,970
‫つまり､ 移動と回転があり､ 回転速度があるわけです｡

49
00:04:46,970 --> 00:04:54,890
‫そこで､ このプラットフォームをZ軸の周りに､ おそらく1秒間に約90度ずつ回転させたいと思います｡

50
00:04:54,890 --> 00:04:57,920
‫つまり､ 1回転するのに4秒かかるわけです｡

51
00:04:57,950 --> 00:04:59,990
‫さっそく再生ボタンを押してみましょう｡

52
00:04:59,990 --> 00:05:00,620
‫そして､ そこにあるのは

53
00:05:00,620 --> 00:05:03,590
‫回転しながら移動するプラットフォームを

54
00:05:03,590 --> 00:05:13,040
‫ですから､ ムービングプラットフォームの機構とは異なり､ 回転するプラットフォームが実際に前後することを心配する必要はありません｡

55
00:05:13,040 --> 00:05:16,310
‫そうさせたいのであれば､ それはそれで考えられる拡張機能です｡

56
00:05:16,310 --> 00:05:23,420
‫しかし､ 私としては､ このようなことが同じ方向にぐるぐる回ることを望んでいるだけなので､ それで十分なのです｡

57
00:05:23,630 --> 00:05:30,200
‫そこで､ このプラットフォームが回転しないようにするため､ この特定のプラットフォームから回転を削除してきます｡

58
00:05:30,200 --> 00:05:40,220
‫そこで､ ビープ音が鳴る回転台､ 基本的にはまだ別のバリエーションを作って､ 適切なメッシュを探すことにチャレンジしたいですね｡

59
00:05:40,220 --> 00:05:45,980
‫回転するプラットフォームとして理にかなっているように､ ぼんやりとした円形のものを選び､

60
00:05:45,980 --> 00:05:54,380
‫デフォルトの回転速度を与えてレベルに配置し､ ちょっとした回転プラットフォームのパズルを作って横断させるのです｡

61
00:05:54,380 --> 00:05:56,300
‫ビデオを一時停止して､ 試してみてください｡

62
00:05:59,400 --> 00:05:59,700
‫なるほど｡

63
00:05:59,700 --> 00:06:00,660
‫お帰りなさい｡

64
00:06:00,690 --> 00:06:08,610
‫コンテンツドロワーに進み､ C++クラス､ Obstacle Assaultを探し､ 移動プラットフォームを右クリックして､

65
00:06:08,610 --> 00:06:14,270
‫このクラスから派生したブループリント・クラス・デバイスを作成します｡

66
00:06:14,280 --> 00:06:23,430
‫BPアンダースコア回転プラットフォームと名付け､ コンテンツのルートに入れ､ ブループリント・クラスを作成することにします｡

67
00:06:23,430 --> 00:06:27,180
‫エディタがポップアップしたら､ それをメインウィンドウにドッキングさせましょう｡

68
00:06:27,180 --> 00:06:33,180
‫毎回ポップアップするコンテンツブラウザを閉じて､ メインレベルに移動し､

69
00:06:33,180 --> 00:06:39,390
‫すべてのテストアセットのある島を右クリックします｡

70
00:06:40,260 --> 00:06:44,490
‫ここに行って､ 良さそうなものがないか見てみましょう｡

71
00:06:44,490 --> 00:06:48,600
‫ここのプラットフォームの見た目が好きなんです｡

72
00:06:48,600 --> 00:06:55,710
‫それを右クリックするか､ そのままクリックすると､ ここでスタティックメッシュで使われているメッシュはSMプラットフォームAなので､

73
00:06:55,740 --> 00:06:59,760
‫それを探してみましょう｡

74
00:06:59,760 --> 00:07:07,620
‫設計図に移動し､ コンテンツを開き､ 描画し､ すべてに移動し､ プラットフォームのアンダースコアM､

75
00:07:07,620 --> 00:07:14,710
‫アンダースコアAを検索して､ メッシュを手に入れましょう｡

76
00:07:15,270 --> 00:07:16,890
‫私にとっては2本目｡

77
00:07:16,980 --> 00:07:21,480
‫これをビューポートにドラッグして､ プラットフォームを作成します｡

78
00:07:21,480 --> 00:07:24,090
‫では､ この中心がどこにあるのかを見てみましょう｡

79
00:07:24,090 --> 00:07:25,860
‫真ん中が中心なのか？

80
00:07:25,860 --> 00:07:30,840
‫そうですね､ これは良いことで､ 真ん中あたりで回転させる必要があるので重要です｡

81
00:07:30,840 --> 00:07:34,560
‫そうでないと､ この円形のプラットフォームがちょっと変な感じになってしまうんです｡

82
00:07:34,770 --> 00:07:43,680
‫また､ このプラットフォームを少し大きくするために､ XとYの寸法を少し拡大することができます｡

83
00:07:43,680 --> 00:07:51,180
‫そして､ 移動させたくないので､ クラスのデフォルトでプラットフォームの速度を削除し､

84
00:07:51,360 --> 00:08:01,440
‫移動距離を潜在的にゼロに設定することができます｡

85
00:08:01,440 --> 00:08:04,050
‫では､ この回転台を保存してきましょう｡

86
00:08:04,170 --> 00:08:14,360
‫メインレベルに移動して､ パズルを設定した小さな浮島を右クリックして､ ここに移動します｡

87
00:08:14,880 --> 00:08:21,930
‫そして､ この島の上に､ 新しい設計図を置きたいと思います｡

88
00:08:21,930 --> 00:08:28,410
‫そこで､ 検索をキャンセルして､ コンテンツのルートに移動し､ 回転するプラットフォームを見つけ､ レベルに配置しましょう｡

89
00:08:28,410 --> 00:08:31,050
‫そして瞬時に､ 本当はもう少し大きくしたいのだとわかりました｡

90
00:08:31,200 --> 00:08:33,630
‫では､ スケールアップしてみましょう｡

91
00:08:33,630 --> 00:08:37,500
‫あと数台､ 3回くらいでいいんじゃないでしょうか｡

92
00:08:37,500 --> 00:08:38,850
‫行って見ましょう｡

93
00:08:38,850 --> 00:08:44,940
‫さて､ さらに大きくすることができると思いますので､ もう少しスケールアップして､

94
00:08:44,940 --> 00:08:48,630
‫本来はXとYで5倍の大きさになるようにします｡

95
00:08:48,660 --> 00:08:54,330
‫なるほど､ これは素晴らしいワイドな回転ディスクで､ 私たちにはかなり難しいかもしれませんね｡

96
00:08:54,330 --> 00:09:02,190
‫そこで､ altとドラッグを使ってこれらを複製し､ プラットフォーム上にいくつか作って適切に配置し､

97
00:09:02,190 --> 00:09:07,860
‫altドラッグでさらにいくつか配置します｡

98
00:09:08,550 --> 00:09:14,320
‫このように､ 私たちは小さなパズルのようなものを用意し､ そのパズルを理解しようと努めています｡

99
00:09:14,340 --> 00:09:18,570
‫だから､ 端と端がぴったり合うようになるまで､ ちょっとずつ動かしていったんです｡

100
00:09:18,570 --> 00:09:24,540
‫ここで､ ゲームモードがあるととても便利です｡ プラットフォームの近くで右クリックし､ ここからプレイをクリックすると､

101
00:09:24,540 --> 00:09:30,450
‫回転するすべてのプラットフォームが表示され､ その上に乗ることができます｡

102
00:09:30,450 --> 00:09:37,620
‫そして､ この移動するプラットフォームの中で､ 私たちがうまく道を見つけるのは､ ちょっとしたチャレンジです｡

103
00:09:37,620 --> 00:09:41,370
‫真ん中にデッドゾーンがありますが､ このデッドゾーンに入るのは難しいので､

104
00:09:41,370 --> 00:09:48,930
‫特に何も入れずに止めようと思っています｡

105
00:09:49,350 --> 00:09:50,280
‫でも､ そこは見ての通りです｡

106
00:09:50,280 --> 00:09:55,080
‫私たちが越えられる課題ですが､ ちょっとトリッキーでそれが楽しいんです｡

107
00:09:55,080 --> 00:09:55,590
‫素晴らしい内容です｡

108
00:09:55,590 --> 00:10:01,270
‫この講義では､ 新しいタイプであるFローテーターについて学び､ それを使ってアクタの回転を設定することで､

109
00:10:01,290 --> 00:10:05,940
‫回転するプラットフォームの作り方を見てきました｡

110
00:10:05,940 --> 00:10:07,530
‫それでは､ 次回の講義でお会いしましょう｡

