‫お帰りなさい｡
‫このビデオでは､ ボウルに機能を追加して､ 左から右へ動いてラケットを跳ね返すことができるようにします（もちろん､
‫これが本来の機能です）｡
‫そして､ もちろんラケットを移動させる必要があります｡
‫それは､ 後ほど､ さらなるビデオの中で行う予定です｡
‫そして､ ゲームもあと少しで終了です｡
‫では､ まずボールのための新しいスクリプトを作りましょう｡ ボールの動きと呼ぶことにします｡
‫そして､ ご覧のように､ 広告を作成し､ 新しいスクリプトを作成し､ それをVisual Studioで開くことができるのです｡
‫さて､ Visual Studioでは､ startメソッドとupdateメソッドが用意されています｡
‫updateメソッドは不要になるので､ 削除してしまいましょう｡
‫しかし､ 必要なのはボールの移動速度を示すメソッドで､ unity内で変更できるようにパブリックな値であるべきです｡
‫だから公共のフロート移動速度速度は通常､ あなたがあなたの速度を使用したいものは､ ほとんどの時間物理学と物理学はフロートで動作するため､
‫フロートとユニティであるべきです｡
‫そこで必要になるのが､ 1回の打撃でどれくらいのスピードが出るかを示す値です｡
‫だから､ ラケットで打つたびに､ 少しずつ速くなるように､ ゲームの難易度を徐々に上げていく｡
‫そして､ それを実現するのが､ もう一つのfloat変数変数で､ extra speed per hitという変数です｡
‫だから､ ヒットするたびに少しづつ上がっていくはずです｡
‫それから､ ボールが一時的に超高速になり､ キャッチできなくなることがないように､ 最高速度が必要です｡
‫もちろん､ それは困るけど､ ここで上限を決めておきたい､ ということもあるでしょう｡
‫そこで､ 一般的なスピードの上限を設定し､ ヒットカウンターと呼ばれる変数が必要になります｡
‫そしてそれは､ ラケットを何回打ったのか､ どんなラケットを打ったのかをカウントすることになります｡
‫そこで､ 今度はボールを動かしてみましょう｡
‫では､ ボールを動かすメソッドを作ってみましょう public void, move ball.
‫そこで､ どのように呼び出すかというと､ 方向に対するベクトルが必要なので､ その方向に対する親愛なる人を空気と呼ぶことにします｡
‫今､ その方向は正規化された方向であるべきです｡
‫つまり､ このムーブボールメソッドは､ 外から呼ぶこともできるし､ 他のメソッドの中で呼ぶこともできるのです｡
‫例えば､ publicなので別のクラスから呼び出したり､ 別のスクリプトから呼び出したりすることができます｡
‫そして､ 私たちがやりたいことは､ まず､ せっかく与えられた方向性が､ 非常におかしな値になってしまう可能性があるので､
‫それを正常化することです｡
‫そこで､ 方向は従来の方向で､ 正規化した値で表示することにしました｡
‫つまり､ このベクトルは大きさが1であることが返される｡
‫だから､ ここではそうしているのです｡
‫では､ 次にスピードを作ります｡ ボールのスピードは､ 次のようになります｡
‫まず､ 移動速度がありましたので､ このドット移動速度に､ 1ヒットあたりの速度を追加する必要がありますので､
‫ヒット数を知る必要があります｡
‫つまり､ このドットヒットカウンターを先に言ってしまうということです｡
‫では､ これまで何回くらいヒットしたのでしょうか？
‫このドットエクストラスピードと掛け合わせることで､ 1ヒットあたりのスピードがアップします｡
‫こうして､ ボールの動きをどんどん大きくしていくのです｡
‫剛体はボールの物理的な側面ですから､ 剛体に力を加えることになります｡
‫ということは､ 剛体を用意する必要があるということですね｡
‫剛体2Dと呼んでいるのは､ このドットゲームオブジェクトのドットゲットコンポーネントに等しく､ コンポーネント名はDXに剛体である必要があります｡
‫そこで､ このゲームオブジェクトの剛体2Dコンポーネントを取り出します｡
‫ボールの移動スクリプトを搭載したゲームオブジェクトのうち､ 今はボールだけですが､ 複数のボールを追加したい場合は､
‫すべてのボールに剛体対DXコンポーネントを割り当てることができます｡
‫さて､ リジッドボディ2Dがわかったところで､ それに影響を与えに行きます｡
‫そこで､ 速度と方向を掛け合わせた速度を変化させます｡
‫つまり､ ムーブボールメソッドに与えられた方向が何であれ､ それに乗算されることになるのです｡
‫移動速度に1ヒットあたりの速度が加算され､ さらにヒット数が加算されます｡
‫ボールを動かすには､ ムーブボールを呼び出す必要があります｡
‫そのためには､ COルーチン内で呼び出すのが一番です｡
‫つまり､ コードルーチンを開始するために､ updateメソッドを使わないということです｡ これは､
‫常にメソッドを呼び出して､ 速度を本当に早く変えたりするので､ 非常に非効率的です｡
‫そして､ その最良の方法は､ 本当はi列挙型のメソッドを作ることです｡
‫つまり､ 呼び出しルーチンに使用できるように列挙子を返すメソッドです｡
‫なんというコールルーチン｡
‫新しいアクションが起こる前に､ 他のすべてを強制的に待機させるのです｡
‫こうすることで､ あるアクションが実行されるのではなく､ 他のアクションを待つように制御することができます｡
‫並行して､ さらなるチュートリアルでコードルーチンを開始するもっと面白い方法を見つけることになるでしょう｡
‫そこで､ まず必要なのは､ パブリックで､ AI列挙体を返す新しいメソッドです｡ これは､ ご覧のように､ 非ジェネリックコレクションの単純な反復をサポートします｡
‫だから､ それを望んでいるのです｡
‫私たちはその1つをスタートボールと呼んでいます｡
‫つまり､ このメソッドはボールの動きを開始するたびに呼び出され､
‫ここでブール値を指定します｡
‫つまり､ スタートの選手を表す変数が必要で､ 値が与えられない場合は単純にtrueとなります｡
‫つまり､ うちの選手1がスタメンになるということです｡
‫つまり､ ボールは左から右へ進むということですね｡
‫わかりました｡
‫そして､ あれはなんといってもスタートボールと呼ぶべきでしょう｡
‫これで､ まだ赤いアンダーラインが表示される｡
‫つまり､ ここではまだエラーが発生しているのです｡
‫それは､ 何かを返さないからです｡
‫すべてのコールドパフが値を返すわけではありませんので､ いくつかの値を返してみましょう｡
‫そこで必要なのは､ まず､ ヒットカウンターをリセットすることです｡
‫そこで､ ここでゼロをセットして､ 新しいウェイト4秒を返します｡
‫つまり､ 私たちのゲームを作るということですね｡
‫2秒間待ちます｡
‫つまり､ ゲームを開始するときや､ スタートボールがコールされたときは､ ヒットカウンターをゼロにしてから2秒間待機し､
‫その後､ 動作を開始するということです｡
‫つまり､ 最初にスタートする選手なのか､ これからスタートする選手なのかをチェックするわけです｡
‫この選手がスターティング・プレイヤー1というわけだ｡
‫そういうことなら､ どうぞ｡
‫このドットムーブボールは
‫そこで､ このメソッドを呼び出し､ 値をマイナス1とゼロにした新しいベクトル2を渡します｡
‫つまり､ ボールは左に動き､ そうでない場合は右に動くはずです｡
‫つまり､ このドットムーブボールの新しいベクトル2は､ 今度は右に移動するはずです｡
‫だから､ 1と0｡
‫つまり､ 1がXの値で､ 0がご覧の通りYの値です､ float yです｡
‫よし､ これでCOのルーチンを始めるだけだ｡
‫そこで､ COルーチンを開始し､ ここではこのドットスタートボールと呼んでいます｡
‫よし､ 今度はそれを保存しておこう｡
‫後々､ さらに機能を追加していく必要があります｡
‫しかし､ とりあえずはunityの中でテストしてみましょう｡
‫そこで､ 今必要なのは､ ボールの質量を変えることです｡
‫超軽量であること｡
‫だから､ 0でいいんです｡ 01と､ 重力の目盛りは､
‫ゼロでいいんです｡
‫私たちのボールには重力はまったく必要ないのです｡
‫このように､ 移動速度が0､ 1ヒットあたりの追加速度が0､ 最大追加速度も0となっています｡
‫そしてそれは､ 私たちが望んでいることではありません｡
‫もちろん､ ボールは動いてほしいので､ スタート値は400がよいでしょう｡
‫一撃の追加速度は50､ 最高速度は1000が良い｡
‫ですから､ これらはあくまで私がテストして思いついた値です｡
‫そして､ 2秒後にどうなるかを見てみましょう｡
‫私たちのボールは､ プレイヤー1のターンだから左に動き始め､ その後､ 行ったり来たりするんだ｡
‫ご覧の通り､ スピードは非常に等しいので､ 特に変化はありません｡
‫1ヒットあたりのスピードの値を増やしていますが､ 常に同じスピードです｡
‫そこで､ そのヒットカウンターで1ヒットあたりのスピードの余力を増やして行きましょう｡
‫そこで､ ヒットカウンターを1つ増やすメソッドを追加する必要があります｡ そのメソッドを
‫public void increase hit counter と呼ぶことにします｡
‫つまり､ ヒットカウンターを1つ増やすことができるのです｡
‫つまり､ このドットのヒットカウンターにこのドットを掛けた場合､ このドットの最大余剰速度より余剰速度が小さくなる､ と書いてあるわけです｡
‫それなら､ そうしないと一時的に速度がよくなって無制限になるので､ ヒットカウンターを増やしていってください｡
‫だから､ 上へ上へと､ さらに上へと上がっていく｡
‫わかりました｡
‫このメソッドは現在まったく呼び出されていませんし､ ボールの動きを表すスクリプトの中でも呼び出されることはありません｡
‫ただし､ 記録のためにスクリプトで呼び出すことにします｡
‫そこで､ 次のビデオでそれをやってみようと思っています｡
‫しかし､ ここまでで､ ボールに動きをつける方法をご覧いただきました｡
‫それでは､ 次のビデオでお会いしましょう｡
‫その前に､ もちろんクリーンアップが必要です｡ ボールの動きをスクリプトにドラッグして､
‫シーンを保存して､ 次のビデオでお会いしましょう｡