‫お帰りなさい｡
‫このビデオでは､ ボールの跳ね返りを正しい方法で処理することで､ よりインタラクティブに､ 一般的な楽しみを作ることができるようになります｡
‫ここでは､ 例えば左手からボールがラケットの上に乗ってくる様子を見ることができます｡
‫そして､ ラケットの底で跳ねたら､ 底のほうに行くはずです｡
‫だから､ Y値は下を示すはずだ｡
‫そして､ それがラケットの上部に向かうと､ 上に行くはずです｡
‫だから､ ボールも上の方に弾むはずです｡
‫ですから､ この場合はプラスのY値を持つはずです｡
‫そのためには､ スクリプトが必要で､ そのスクリプトはボールに追加する必要があります｡
‫そこで､ ボールに新しいスクリプトを追加することにします｡
‫このスクリプトは衝突を制御します｡ つまり､ どのように衝突するか､ どこで衝突するかなどをチェックするのです｡
‫ラケットからだけでなく､ 上や下の壁からもそのようにぶつかるはずです｡
‫わかりました｡
‫では､ そのために必要なものは何でしょうか？
‫ボールの動きのコントローラを用意し､ そのメソッドにアクセスできるようにする必要があります｡
‫そこで､ ボールムーブメントと呼んでいる､ パブリックなボールムーブメントを作ってみましょう｡
‫これで､ ボールの動きを表すスクリプトのオブジェクトができました｡
‫そうすると､ バランスをとるためのメソッドが必要になります｡
‫だから､ ラケットからのブレークによるバウンスと呼ぶことにします｡
‫そして､ ここではDXオブジェクトへのコリジョンが必要で､ これをCと呼ぶことにします｡
‫さて､ レコードが上か下か､ どちらへ行くべきかを知るには､ どうしたらいいでしょうか｡
‫ボールポジションを確保する必要がある｡
‫レコードの位置､ レコードの高さが必要で､ その上で上に行くべきか下に行くべきかを計算するのです｡
‫では､ ボールの位置を表すベクトル3､ ベクトル3を作成しましょう｡
‫それから､ このドット変換のドットポジションを使います｡
‫つまり､ このゲームオブジェクトの位置が何であれ､ コリジョンコントローラー（この場合はボール）を運んでいるのがどちらであれ､
‫その位置はボールの位置であるべきなのです｡
‫それがここにあるわけです｡
‫そして､ ラケットの位置である3を作る必要があり､ これは衝突するゲームオブジェクトであるべきです｡
‫ですから､ 例えばラケットをゲームオブジェクトにする｡
‫つまり､ ゲームオブジェクトを見るということですね｡
‫つまり､ どのようなゲームオブジェクトと衝突しても､
‫その位置と高さが必要です｡
‫では､ どの時点でぶつかったのかを知るために､ ぶつかったラケットの大きさを測ってみると､ 上側でぶつかったのか､
‫それとも下側でぶつかったのか......｡
‫次に､ 左側のプレイヤー1のレコードを跳ね返すのか､ 右側のプレイヤー2のレコードを跳ね返すのかを知る必要があります｡
‫それをもとに､ ボールの向きを変える｡
‫つまり､ プレイヤーのレコードに1回跳ね返ると､ 方向がマイナスXからプラスXになるわけです｡
‫一方､ プレイヤー2からは､ プラスXからマイナスXになりますが､ これは別の値､ フロートXを保存するか､
‫別の変数を作成することで実現できます｡
‫そして､ その名前のゲームオブジェクトがラケットプレイヤー1と同じなら､ xの値を1に設定します｡
‫だから､ 右の方に戻ってください｡
‫だから､ 右に飛ばしてください｡ そうしないと､ xはマイナスになります｡
‫xとyの値があれば､ ベクトルも作成できるので､ あとはyの値だけを計算すればよいのです｡
‫つまり､ yはボールの位置と等しいということです｡
‫なぜ？
‫マイナス記録位置ドットyを記録高さで割った値｡
‫これで､ ボールの動きを表すゲームオブジェクトを呼び出し､ そのメソッドであるincrease､ counter increase､ 正確にはhit
‫counterを呼び出すことができるようになりました｡
‫そして､ 思い出していただきたいのは､ ヒット数を増やすことで､ またボールのスピードを上げるという方法です｡
‫ここでそれを呼び出して､ 先に進んでmove ballメソッドを呼び出すことができます｡ このメソッドにはボールの方向を表すベクトルが必要で､
‫それはXとYになるはずです｡
‫だから､ 向かって右か左のどちらかに向かって｡
‫そしてここで､ その高さを決めるのです｡
‫下に向かっていくべきか､ 上に向かっていくべきか｡
‫それが､ ロケット方式からのバウンスです｡
‫さて､ 正しいコードルーチンを実行する必要があります｡ これまで､ ボールが左右に動くだけのコードルーチンがありました｡
‫そして､ 今度はコードのルーチンを少し変更する必要があります｡
‫ということは､ コリジョンにボイドが必要ということですね｡
‫DHに入る｡
‫そこで､ 2つのRDが衝突するたびに､ あるコードを実行するようにしたいのです｡
‫つまり､ ボールが何かに衝突するたびに､ コリジョンが発生することになります｡
‫ここで､ 衝突したゲームオブジェクトがあるかどうかを確認します｡
‫つまり､ collision dot game object dot nameはrecord player oneと同じです｡
‫またはレコードプレーヤーと同等にする｡
‫だから､ そのレコードプレーヤーもコピーするんだ｡
‫だから､ それなら｡
‫レコードに当たると､ それは困るんですよ｡
‫例えば､ 下の壁とか上の壁とかにぶつかったら｡
‫2つの記録のうち､ どちらかを達成した場合のみ､ それを行いたいと考えています｡
‫だから､ double X double comparison sine double equals sineが必要なんです､ もちろん｡
‫そうしないと､ ここでエラーが発生して､ このドットバウンスをレコードから行うことになりますから｡
‫私たちの衝突で
‫だから､ ボールを打てば､ コリジョンでそれを行う｡
‫LS 左の壁にぶつかったら｡
‫そのゲームオブジェクトを見るか､ そのゲームオブジェクトの思考名がwall leftと同じであることをコリジョンします｡
‫ならばここで､ スコアを伸ばしたい｡
‫そこで､ デバッグログとでも言いましょうか､ その機能は後で追加することにしましょう｡
‫だから､ 一般的にスコアを上げる､ スコアシステムというのは､ ウォールレフトでコリジョンと言って､ ウォールライトで同じことをするんです｡
‫ということは､ 右の壁に当たれば､ こちらのプレイヤー1が得点を得るということになる｡
‫左の壁がやられた場合｡
‫プレイヤー2は得点を得るか､ 得点を得る｡
‫わかりました｡
‫では､ これでスクリプトを保存してみましょう｡
‫さて､ テストする前に､ ここにスクリプトを用意する必要があります｡ コリジョン コントローラー用のボール移動スクリプトです｡
‫そして､ これが終わったら､ いよいよゲームのテストに入ります｡
‫そこで､ 2秒後にゲームを実行してみましょう｡
‫私たちのボールは動くはずですが､ ご覧の通り､ 打った場所によって方向が変わります｡
‫だから､ これで完璧に落ちるはずだ｡
‫また上がるはずなのに､ 何度も何度も上がる｡
‫というわけで､ ご覧の通り､ 欲しかった機能を手に入れることができました｡
‫もちろん､ ご覧のとおり､ ボールはどんどん速くなります｡
‫そして､ この時点では打つことは不可能です｡
‫また､ デバッグ用のcollision with ball leftとcollision with ball rightが呼び出されています｡
‫実際にここで壁との衝突を変えるべきかもしれませんね｡
‫デバッグログには､ このように正しい内容が表示されます｡
‫この後､ 選手の得点を増やす必要があるので､ ボールをセンターに戻す位置取りが必要です｡
‫わかりました｡
‫というわけで､ 次の動画ではそれをご紹介します｡
‫では､ 現地でお会いしましょう｡