﻿1
00:00:03,990 --> 00:00:05,220
‫こんにちは､ ようこそ｡

2
00:00:05,220 --> 00:00:07,980
‫この講義では､ 動くプラットフォームを実装しています｡

3
00:00:07,980 --> 00:00:17,010
‫実際にこのプラットフォームを動かすには､ ゲームループというものを理解し､ C++のtick関数がそれにどう関係しているのかを理解する必要があります｡

4
00:00:17,010 --> 00:00:19,260
‫潜入して確かめてみよう｡

5
00:00:19,410 --> 00:00:24,960
‫つまり､ ここまでは､ この関数､ ティック関数を無視していたわけです｡

6
00:00:24,960 --> 00:00:29,430
‫ビギンプレイにすべて入れているのは､ 以前『Blueprint』で使ったことがあるからです｡

7
00:00:29,430 --> 00:00:32,400
‫しかし､ このティック機能については､ 少しばかり解説しておきましょう｡

8
00:00:32,400 --> 00:00:40,620
‫tickを理解するためには､ ゲームループの概念を理解する必要があり､ ほとんどのゲームエンジンはこの方法でエンジンを構築します｡

9
00:00:40,620 --> 00:00:46,170
‫その仕組みは､ まずゲームエンジンがプレイヤーからの入力を受け止めます｡

10
00:00:46,170 --> 00:00:52,290
‫スペースバーが押されているのか､ Wキーなのか､ マウスが少し動いただけなのか､ マウスボタンが押されているのか､

11
00:00:52,290 --> 00:01:00,360
‫現在起きていることは何でもゲームエンジンに取り込まれて処理されるわけです｡

12
00:01:00,390 --> 00:01:05,640
‫そして次に､ その情報をもとにゲームの状態が更新されます｡

13
00:01:05,640 --> 00:01:10,560
‫プレイヤーが少し前に動くとか､ ボールが跳ねるとか､ そういうことが計算されて､

14
00:01:10,560 --> 00:01:17,340
‫物理エンジンが動いて､ これまでのゲームで見てきたような素晴らしいものが出てくるわけです｡

15
00:01:17,340 --> 00:01:21,930
‫そして第3段階として､ ゲームエンジンがゲームの状態を受け取り､ 「プレーヤーはここ､

16
00:01:21,930 --> 00:01:27,870
‫カメラはここ､ ボールはあそこ」と言い､ それをディスプレイにレンダリングするのです｡

17
00:01:27,870 --> 00:01:34,020
‫数字の羅列から､ 画面に表示する画像に変えてくれるのです｡

18
00:01:34,140 --> 00:01:43,290
‫さて､ その画像はフレームと呼ばれ､ フレームは動画を構成する一連の画像の中の1枚の画像です｡

19
00:01:43,350 --> 00:01:50,730
‫さて､ あなたのコンピューターは1秒間にたくさんのフレームをレンダリングできるかもしれませんし､ レンダリングできる数が少ないかもしれません｡

20
00:01:50,730 --> 00:01:53,430
‫しかし､ それはフレームレートと呼ばれるものです｡

21
00:01:53,430 --> 00:01:58,710
‫あなたのコンピューターは1秒間に何フレームまでゲームループが可能ですか？

22
00:01:58,710 --> 00:02:03,030
‫入力を処理し､ 状態を更新し､ それをレンダリングする頻度が高いか？

23
00:02:03,210 --> 00:02:11,040
‫アンリアルでは､ ゲーム ループの中間ステップでゲームの状態を更新するのに役立つ

24
00:02:11,040 --> 00:02:14,880
‫tick 関数を使用しています｡

25
00:02:14,880 --> 00:02:20,280
‫フレームごとに呼び出される関数で､ イベントと同様にブループリントに存在します｡

26
00:02:20,280 --> 00:02:27,750
‫つまり､ tickイベントを取得することで､ 基本的に1フレームごとにゲームを更新するようなことができるようになるわけです｡

27
00:02:27,760 --> 00:02:33,720
‫さて､ 今回の場合､ これでプラットフォームを動かしたいのです｡

28
00:02:33,720 --> 00:02:35,130
‫では､ どうすればいいのか｡

29
00:02:35,130 --> 00:02:43,020
‫さて､ 設定したアクターの位置を再生開始時に削除し､ 代わりにティックでその位置を更新しても､

30
00:02:43,020 --> 00:02:51,660
‫最初はあまり効果がありません｡ なぜなら､ 常に同じ位置に位置を設定して更新しているだけだからです｡

31
00:02:51,660 --> 00:03:02,190
‫アクターの位置､ 私のベクトル､ そしてセミコロンを設定すると､ 1フレームごとに､ ゲームループを1回繰り返すだけです｡

32
00:03:02,220 --> 00:03:05,220
‫俳優を同じ場所に配置するだけです｡

33
00:03:05,310 --> 00:03:11,790
‫しかし､ これが面白くなるのは､ 私のベクターの中の値を更新する場合です｡

34
00:03:11,790 --> 00:03:24,690
‫つまり､ 私のベクトルドットzは､ 私のベクトルドットzに1を足したものに等しいということができます｡

35
00:03:24,870 --> 00:03:31,260
‫ここでやっていることは､ 現在ベクトルZに存在している値を取り出しているわけです｡

36
00:03:31,260 --> 00:03:41,640
‫それに1を足して､ その結果全体をベクトルdot zに戻しているのです｡

37
00:03:42,000 --> 00:03:51,630
‫つまり､ このゲームループを通過してアンリアルエンジンからtickが呼ばれるたびに､ 私のベクトルzは1ずつ増えていくはずです｡

38
00:03:51,690 --> 00:03:53,700
‫では､ その結果を見てみましょう｡

39
00:03:53,700 --> 00:04:00,210
‫Unreal に入ってコンパイル ボタンを押し､ 次に再生ボタンを押します｡

40
00:04:00,210 --> 00:04:07,140
‫プラットフォームが上昇し､ 空中に浮いているのがわかるでしょう｡ Z位置を増やしているので､

41
00:04:07,140 --> 00:04:11,100
‫どんどん高くなっています｡

42
00:04:11,100 --> 00:04:16,770
‫そこで､ Zを変えるのではなく､ Yを変えることに挑戦してほしいのです｡

43
00:04:16,770 --> 00:04:18,960
‫そこで､ 正しいコードの行を変更します｡

44
00:04:18,960 --> 00:04:21,840
‫複数の箇所を変更する必要があるかもしれません｡

45
00:04:21,840 --> 00:04:29,760
‫プラットフォームキューブのサイズを変更して､ 飛び乗るのに適したプラットフォームにし､ Zを更新する代わりにYを更新することでプラットフォームに飛び乗れるかどうかを確認し､

46
00:04:29,760 --> 00:04:35,160
‫ビデオを一時停止して試してみてください｡

47
00:04:38,260 --> 00:04:38,770
‫なるほど｡

48
00:04:38,770 --> 00:04:39,470
‫お帰りなさい｡

49
00:04:39,490 --> 00:04:42,250
‫では､ Visual Studioのコードに飛び込んでみましょう｡

50
00:04:42,250 --> 00:04:49,510
‫そして､ ベクトルyをベクトルyに1を足したものにしたいのです｡

51
00:04:49,510 --> 00:04:54,880
‫つまり､ Z軸ではなくY軸に沿って移動させることになります｡

52
00:04:55,180 --> 00:05:01,120
‫そして､ my vector変数に格納されている結果に､ 毎フレーム位置を設定することになります｡

53
00:05:01,120 --> 00:05:05,050
‫そこで､ Unrealに戻り､ コンパイルを確認します｡

54
00:05:05,050 --> 00:05:10,720
‫次に､ 移動するプラットフォームをアウトラインで検索し､ 選択します｡

55
00:05:10,720 --> 00:05:12,400
‫詳細ペインに移動します｡

56
00:05:12,850 --> 00:05:20,950
‫ここで､ 基本的にプラットフォームをダブルクリックして表示させ､ それを少し拡大したいと思います｡

57
00:05:20,950 --> 00:05:31,030
‫そこで､ Rキーでスケールツールを使って､ YスケールとXスケールを大きくし､ Zスケールを小さくしてみます｡

58
00:05:31,030 --> 00:05:32,740
‫だから､ 私のプラットフォームは少し短くなっています｡

59
00:05:32,740 --> 00:05:41,410
‫そうすると､ レベルを保存してプレイを押すと､ プラットフォームが私の右側に浮いているようになるかもしれませんね｡

60
00:05:41,410 --> 00:05:45,070
‫だから､ 大きくもなって､ 上に来て立てるようになったということです｡

61
00:05:45,190 --> 00:05:45,970
‫そして､ そこに行く｡

62
00:05:45,970 --> 00:05:48,280
‫最初のちょっとしたゲームの仕組みができました｡

63
00:05:48,280 --> 00:05:49,600
‫動くプラットフォームができた

64
00:05:49,600 --> 00:05:55,330
‫そのあたりは､ 今後の講義で少しずつ解明していきたいと思います｡

65
00:05:55,330 --> 00:06:00,400
‫でも､ とりあえず､ 実際にC++でゲームの機能を実装してみました｡

66
00:06:00,400 --> 00:06:02,590
‫今この瞬間､ あなたはとても誇らしく思うはずです｡

67
00:06:02,590 --> 00:06:05,950
‫自分をほめてあげて､ 次の講義でお会いしましょう｡

