‫こんにちは､ ようこそ｡
‫この講義では､ 空間内の異なるfベクトルの位置を視覚化するために､ シーンにデバッグ球を描くことを学びます｡
‫さっそく､ この仕組みを見てみましょう｡
‫回転を伴う場所でグラブコンポーネントを呼び出したくなるのは､ ごく近い将来のことです｡
‫このためには､ どのコンポーネントを取得しようとしているのか､ 位置､ 回転､ この場合は骨の名前など､ いくつか知る必要がありますが､
‫喜んで無視することができます｡
‫でも､ それ以外のことも知っておく必要があります｡
‫回転に関しては､ コンポーネントの回転を取得すればよいので､ 非常に簡単です｡
‫コンポーネントに至っては､ それも至極真っ当なものです｡
‫あとは､ 球体トレース時に衝突したコンポーネントを取り出せばいいだけです｡
‫なぜなら､ 実際のコンポーネントの位置だけでなく､
‫その頭部を掴めるかもしれないからです｡
‫でも､ この物体の根元を見てみると､ 実は根元近くまで下がっているんです｡
‫だから､ ちょっと変な結果になることもある｡
‫上部の羽の近くまでつかむのですが､ そうするとガーゴイルが上に移動して浮きすぎてしまうので､ そのようにするとしっくりこないんです｡
‫試してみましたが､ ちょっと変な感じです｡
‫そこで､ 球体トレースを行う際に､ このガーゴイルのどこにぶつかったかを調べたいと思います｡
‫CPのグラブに移動すると､ ヒット結果の中に位置のベクトルを取得するためのオプションがいくつかあります｡
‫結果ドットを押して､ コントロールスペースを押すと､ ここにさまざまなものが表示されます｡
‫そのうちの1つがヒットした部品であることがわかると思います｡
‫それは後ほど使用する予定です｡
‫潜在的に面白い存在になりうるインパクトポイントがあります｡
‫場所もあります｡
‫ですから､ インパクトポイントなのか､ 欲しい場所なのかを把握するためには､ これを世界で可視化する方法､
‫見ようとしているポイントを可視化する方法があれば理想的です｡
‫そして幸運なことに､ 私たちがデバッグラインを描いているのを見つけたのと同じインクルードファイルの中にあります｡
‫デバッグ球の描画機能もあり､ 同じパラメータを多く持っています｡
‫最初のパラメータとして球の中心であるワールドが必要です｡
‫radius は float で､ 球が持つべきセグメントの数です｡
‫これが何を意味するのかは､ 実際に描いてみてのお楽しみということですね｡
‫次に色､ そしてシーン内で持続させるかどうか､ どれくらいの時間持続させるか､ などです｡ では､ この球体を描いてみましょう｡
‫そして､ 最初はこれを使って､ スイープの終点に球体を描くだけです｡
‫そこで､ ドローデバッグスフィアを呼び出すことにします｡
‫ここにはすでにデバッグ用の線が描かれているので､ 新たに何かを入れる必要はない｡
‫Get Worldが最初の引数で､ 次にこの球体の中心､ これが終端ベクトル､
‫半径になります｡
‫半径10センチ､ セグメントも10個にします｡
‫そして､ 今回のFカラーです｡
‫何か違うものを与えよう｡
‫Fカラー､ コロン､ コロン､ 今度は青い球体かな､ しつこいくらいに線｡
‫チックのたびにグラブを呼ぶのではなく､ 1度だけ呼ぶので､ これは本当であってほしいです｡
‫そこで､ これをtrueに設定し､ ライフタイムを設定します｡
‫球体の持続時間を5秒に設定し､ あとはあまり気にしないことにしています｡
‫行の最後にセミコロンをつけて再コンパイルします｡ コンパイルが終わったら再生ボタンを押して､
‫ガーゴイルから少し下がって､ 左クリックすると､ 今見ている場所から4メートル手前に球体が現れるのが見えます｡
‫5秒間持続すると思っていましたが､ 実はここに入れるべきはpersistがtrueであるということではなく､
‫基本的にライフタイムを完全に無視して､ ただ永遠に保持するということです｡
‫そこで､ falseと入れて､ 5秒という時間を設定すると｡
‫そこで私は､ やりやすく誤解しやすい文書を間違えただけで､ そのまま私たちのゲームで再生を押してしまうのです｡
‫そして､ 5秒後にその球体を1つ作ると､ また消えてしまうのです｡
‫だから､ あまり長い間､ 私たちの世界を乱雑にすることはないでしょう｡
‫では､ ヒットした結果から､ どの場所が必要なのかを考えてチャレンジしてみましょう｡
‫ヒット結果位置とヒット結果着弾位置､ それぞれにデバッグ球を描き､ F色を使い分けて表示し､
‫どれがどれで何が違うのかがわかるようにする？
‫どれが必要だと思う？
‫ビデオを一時停止して､ 試してみてください｡
‫なるほど｡
‫お帰りなさい｡
‫コードに戻り､ if文の中でヒットマークを付けてみましょう｡
‫だから､ 何らかのヒット結果を出すことになる｡
‫そして､ アクターを手に入れる直前に､ Get Worldを使ってデバッグ用の球体を描きます｡
‫そして､ 最初に描画するのはヒットした場所です｡ 半径を10､ セグメントを10､ 色をf､
‫コロン､ 今回はコロングリーン､ 持続的な線はfalse､ 寿命はlifetimeにします｡
‫5秒にして､ この行をコピーしてみましょう｡ ほとんど同じことをしたいので､
‫変更する以外は｡
‫ヒットリザルトドットのヒットリザルト位置｡
‫インパクトポイントと色｡
‫緑と赤の違いがわかるように､ それを読み替えようかな｡
‫コンパイルしてエディタに向かおう｡
‫再生ボタンを押してみましょう｡
‫そして､ 実際に何も当たっていないのに､ この青い球が出るのがわかると思います｡
‫そして､ ガーゴイルに近づいて､ ガーゴイルを見て､ 打とうとしていたら｡
‫さて､ ここで2つの全く異なる論点が生まれました｡
‫緑色のものはガーゴイルからかなり離れています｡
‫赤い方がより近いですね｡
‫それで､ どうしたんですか？
‫ヒット結果のドキュメントを見て､
‫どのような位置が意味されるかを見てみると､
‫ここに議論があります｡
‫そして､ この点が実際にどうなっているのか､ イジェクトしてちょっと間を置いてみると､ 確かにグリーンワンはその説明に合致していることがわかります｡
‫半径1メートルの球体をガーゴイルに向かって投射または掃射していますが､ この緑色の点に到達するとすぐにガーゴイルにぶつかります｡
‫この点は周囲約1メートルで､ インパクトポイントは球体がガーゴイルにぶつかる位置を示しています｡
‫ガーゴイルの上にあるのですから､ この方が掴みやすいでしょう｡
‫こっちで掴んだら､ ガーゴイルが空中でランダムにどこかの点を回転して回ってしまい､ 全く掴んでいるように見えないんです｡
‫一方､ この赤い点のあたりは､ 翼端でつかんだような感じで､ 自然な感じになりますね｡
‫素晴らしい内容です｡
‫この講義では､ ヒット結果から得られるものについてもう少し学び､ さらにデバッグ用のオブジェクトをシーンに描画する方法を学びました｡
‫それでは､ 次回の講義でお会いしましょう｡