﻿1
00:00:04,460 --> 00:00:05,210
‫こんにちは､ ようこそ｡

2
00:00:05,210 --> 00:00:11,570
‫この講義では､ キャラクターを殺すことができるように､ レイトレーシングでそれらのバグを修正する予定です｡

3
00:00:11,570 --> 00:00:18,290
‫自殺するわけでもないし､ カプセルを無効化すれば､ その場所を轢くことができる｡

4
00:00:18,290 --> 00:00:21,050
‫コライダー それでは､ どのように実現するのか､ 早速見ていきましょう｡

5
00:00:21,740 --> 00:00:24,500
‫だから､ 今､ 変なバグが発生しているんです｡

6
00:00:24,500 --> 00:00:35,930
‫敵のAIが自分の顔を撃っているようなもので､ すぐに床に倒れて死んでしまうのがわかると思います｡

7
00:00:35,930 --> 00:00:40,430
‫しかし､ それだけでなく､ 死んだように撮影を続けるのです｡

8
00:00:40,430 --> 00:00:43,430
‫そこで､ それらの問題のいくつかを順次解決していくことになります｡

9
00:00:43,430 --> 00:00:45,290
‫何が起こっているのか見てみましょう｡

10
00:00:45,290 --> 00:00:50,900
‫だから､ まず､ 顔を撃つこと自体､ 何が起こっているのか､ かなりわかりやすいかもしれませんね｡

11
00:00:50,900 --> 00:00:58,100
‫銃のCPに移動して､ これがどのように機能しているかを見てみると､

12
00:00:58,100 --> 00:01:08,000
‫現在､ ヒット結果を見つけるために､ チャンネルごとに1行のトレースを行っています｡

13
00:01:08,060 --> 00:01:13,370
‫そして､ すでに説明したAIで､ 目線の高さあたりになる｡

14
00:01:13,370 --> 00:01:15,080
‫そこからトレースすることになるのです｡

15
00:01:15,080 --> 00:01:17,660
‫そして､ ここにちょっとした問題がありそうなことがおわかりいただけると思います｡

16
00:01:17,660 --> 00:01:21,950
‫目からなぞり始めると､ このカプセルにぶつかるんです｡

17
00:01:21,950 --> 00:01:24,500
‫実は､ 私たち自身にも問題があるのです｡

18
00:01:24,500 --> 00:01:29,990
‫ただ､ カメラ越し､ 肩越しに見ることができるので､ カプセルを回避してぶつからないので､

19
00:01:30,020 --> 00:01:37,550
‫本質的には問題が起きないということです｡

20
00:01:37,550 --> 00:01:42,500
‫でも､ カメラの位置が違えば､ 同じように簡単に自分たちのカプセルに入ることができるんです｡

21
00:01:42,920 --> 00:01:44,090
‫では､ どうすればそれを止められるのか｡

22
00:01:44,090 --> 00:01:50,030
‫そこで､ 戻ってこれを定義すると､ 構造体を作成します｡ F collision query

23
00:01:50,030 --> 00:01:57,140
‫parametersはparamsと呼ぶことにして､ 無視すべきアクターを行の一部として追加します｡

24
00:01:57,140 --> 00:02:04,610
‫Trace これを行うには､ params dot add ignore ignore actor とやって､ 無視すべきアクターは何なのか？

25
00:02:04,610 --> 00:02:06,590
‫まあ､ 1つ目は単純に銃のことなんですけどね｡

26
00:02:06,590 --> 00:02:10,460
‫だから､ これと2番目がオーナー--｡

27
00:02:10,460 --> 00:02:14,870
‫そのため､ paramsは無視されたactor get ownerを追加します｡

28
00:02:14,870 --> 00:02:19,430
‫だから､ 基本的に銃の持ち主は自分の銃で殴られてはいけないのです｡

29
00:02:19,430 --> 00:02:25,270
‫当然､ 自分の手駒を銃で打てるようにしたいかもしれないけど､ じゃあ､ この場合はダメなのかっていうと､

30
00:02:25,340 --> 00:02:26,900
‫そうでもないんです｡

31
00:02:26,900 --> 00:02:38,240
‫そこで､ ライントレースの最後の引数として､ チャンネルごとにパラメータを渡そうと思います｡

32
00:02:38,240 --> 00:02:44,510
‫理想的には､ 再生ボタンを押すと､ カプセルとプレイヤーにパーティクル効果が現れ､

33
00:02:44,510 --> 00:02:52,850
‫最終的には体力がゼロになり､ 床に倒れている状態になるはずです｡

34
00:02:52,910 --> 00:02:53,510
‫これでよしとしよう｡

35
00:02:53,510 --> 00:02:54,830
‫どこかの床に寝そべっている｡

36
00:02:54,830 --> 00:02:56,420
‫挫折したようです｡

37
00:02:56,420 --> 00:03:01,580
‫実際のプレーヤーがどこに行ったのかわからないが､ まだフロアにスポーンしている｡

38
00:03:01,580 --> 00:03:03,140
‫しかし､ ここでもう一つのバグが発生します｡

39
00:03:03,140 --> 00:03:08,840
‫今もシュートを打って､ カプセルを当てているのがわかると思います｡

40
00:03:08,960 --> 00:03:10,970
‫そして､ 実際に同じことが起こっているのです｡

41
00:03:10,970 --> 00:03:15,200
‫もし私がこの男を殺すとしたら､ 先に殺してしまいましょう｡

42
00:03:15,200 --> 00:03:15,920
‫これでよしとする｡

43
00:03:15,920 --> 00:03:17,060
‫そこにたどり着くこと｡

44
00:03:17,090 --> 00:03:20,450
‫画面上に指し示すものがないと､ もっと大変なんです｡

45
00:03:20,450 --> 00:03:22,250
‫でも､ 捕まえられるんですね｡

46
00:03:22,670 --> 00:03:25,010
‫しかし､ 彼はまだ私を撃っている｡

47
00:03:25,100 --> 00:03:29,420
‫そして､ 彼のカプセルがまだ作動していることも確認できたはずです｡

48
00:03:29,420 --> 00:03:35,840
‫そこで､ AIとプレイヤーの両方で､ キャラクターが殺されたときにやりたいことがいくつかあるんです｡

49
00:03:35,840 --> 00:03:42,710
‫では､ シューターキャラクターのCPから､ テイクダメージの関数を探してみましょう｡

50
00:03:43,040 --> 00:03:44,870
‫そして､ 基本的にはここにif文を追加したいと思います｡

51
00:03:44,870 --> 00:03:47,150
‫if is deadと言いたい｡

52
00:03:47,240 --> 00:03:49,400
‫だから､ 基本的には最後にダメージを受けたんです｡

53
00:03:49,400 --> 00:03:50,300
‫私たちは今､ 死んでいる｡

54
00:03:50,360 --> 00:03:51,980
‫いろいろやらなきゃいけないことがあるんです｡

55
00:03:52,250 --> 00:03:53,390
‫後片付けをしなければならない｡

56
00:03:53,660 --> 00:03:56,750
‫まず､ このキャラクターからコントローラを切り離す必要があります｡

57
00:03:56,750 --> 00:03:58,880
‫コントローラーは､ このキャラクターを担当しなくなりました｡

58
00:03:58,880 --> 00:03:59,840
‫キャラクターが死んでいる｡

59
00:03:59,840 --> 00:04:04,070
‫シュートを打たせないようなことはできない｡

60
00:04:04,070 --> 00:04:06,860
‫だから､ AIが死んだら撃つということはなくなる｡

61
00:04:06,860 --> 00:04:08,090
‫それはそれで､ なんとなく納得できます｡

62
00:04:08,090 --> 00:04:12,950
‫そしてさらに､ 世の中を動き回ろうとすることもできなくなるのです｡

63
00:04:12,950 --> 00:04:19,100
‫コントローラからデタッチして破壊することで､ そのすべてを無効にしています｡

64
00:04:19,250 --> 00:04:20,360
‫それが､ 私たちの仕事です｡

65
00:04:20,870 --> 00:04:25,010
‫次に､ カプセルのコリジョンをオフにすることです｡

66
00:04:25,460 --> 00:04:32,150
‫そこで､ カプセルコンポーネントの取得を行い､ 上部にハッシュのインクルードを行う必要があります｡

67
00:04:32,680 --> 00:04:34,060
‫カプセル成分について｡

68
00:04:34,070 --> 00:04:37,720
‫では､ コンポーネントやカプセルコンポーネントをあそこに入れるにはどうすればいいのか｡

69
00:04:38,760 --> 00:04:40,940
‫その後､ 下にスクロールして､ テイクダウンを行います｡

70
00:04:41,270 --> 00:04:46,310
‫矢印演算子で､ set collision enabledをやってみます｡

71
00:04:46,490 --> 00:04:48,890
‫だから､ なんとなく有効でない設定にしたいのです｡

72
00:04:48,890 --> 00:04:51,260
‫だから､ 変にセットコリジョンを有効にしているんです｡

73
00:04:51,260 --> 00:04:55,340
‫だから､ Eコリジョン有効､ コロン､ コリジョンなしになるんです｡

74
00:04:55,430 --> 00:05:00,500
‫そこで､ カプセルのコライダーを無衝突に設定して､ すぐに使えるようにします｡

75
00:05:00,920 --> 00:05:01,250
‫なるほど｡

76
00:05:01,250 --> 00:05:04,450
‫だから､ 先にビルドして､ それが役に立ったかどうかを確認するんだ｡

77
00:05:04,460 --> 00:05:06,520
‫まあ､ 少なくともコンパイルは成功したんですけどね｡

78
00:05:06,520 --> 00:05:07,430
‫さあ､ 再生ボタンを押してみましょう｡

79
00:05:07,430 --> 00:05:09,140
‫それで､ 彼は私を撃っているのです｡

80
00:05:09,140 --> 00:05:10,910
‫死ぬまで撃ってやろうか？

81
00:05:11,210 --> 00:05:11,840
‫これでよしとしよう｡

82
00:05:11,840 --> 00:05:12,560
‫彼は死んだ｡

83
00:05:12,740 --> 00:05:17,240
‫彼のカプセルの上を通れば､ もう衝突することはないんです｡

84
00:05:17,240 --> 00:05:21,800
‫また､ 銃を撃たなくなったのも素晴らしいことです｡

85
00:05:21,890 --> 00:05:24,050
‫そして､ 彼が私たちを殺しに行くかどうかも見てみましょう｡

86
00:05:24,050 --> 00:05:24,920
‫その行動とは？

87
00:05:24,920 --> 00:05:27,140
‫だから､ 10枚撮りを待つしかないんです｡

88
00:05:27,140 --> 00:05:32,450
‫そして､ 彼と同じように私も倒れて死んでいるのがわかると思いますが､ 彼は私を撃ち続けているのです｡

89
00:05:32,450 --> 00:05:32,930
‫それでいいんです｡

90
00:05:32,990 --> 00:05:39,200
‫彼はもう空のコライダーには当たらないし､ 私はもう死んでいるからカメラをコントロールできない｡

91
00:05:39,200 --> 00:05:39,530
‫すごい｡

92
00:05:39,530 --> 00:05:41,780
‫FPSの基本がここにあるわけですね｡

93
00:05:41,780 --> 00:05:45,620
‫追ってくる敵がいる､ 撃ってくる､ それを撃てる｡

94
00:05:45,620 --> 00:05:46,820
‫二人とも健康です｡

95
00:05:46,820 --> 00:05:48,830
‫二人とも死んでもいい｡

96
00:05:48,860 --> 00:06:00,680
‫そこで次は､ 実際にゲーム終了条件を設定して､ プレイヤーに「負けた」「勝った」というメッセージを表示できるようにします｡

97
00:06:00,680 --> 00:06:02,300
‫そしてそれは､ 次回の講義のテーマとなるのです｡

98
00:06:02,300 --> 00:06:02,960
‫では､ そこのあなた｡

