‫お帰りなさい｡
‫果物のヘルシーフルーツをいくつかアップしておきますね｡
‫さあ､ 行こう｡
‫それがどうした？
‫このビデオのゴールは､ いくつかの果物を底から産み出し､ ゲームシーンやゲームビューの中に射出し､
‫それらをスライスすることです｡
‫今のところスライスすることはできませんが､ 後々できるようになるので､ ランダムに行いたいと考えています｡
‫そこで､ ランダムな果実を､ ランダムな時間距離で作りたいと思います｡
‫だから､ まったく同じ時間経過後に作成されることはないはずです｡
‫そこで､ そのための新しいスクリプトを作成し､ それをスパナと呼ぶことにしましょう｡
‫スパナになってしまう｡
‫では､ それをオープンにしてみましょう｡
‫そしてここでは､ updateメソッドは必要ありませんが､ いくつかの変数が必要です｡
‫そこで､ 一つには､ ゲームオブジェクトが必要になります｡
‫だから､ パブリックゲームオブジェクトとその1つは､ スポーンする果実になります｡
‫だから､ 産みたい果物は､ オレンジだったり､ バナナだったり､ いろいろなんです｡
‫そして､ どの果実を産むべきかを知りたいのです｡
‫そして､ 異なる果実の間にどれだけの時間を持たせるかを知りたいのです｡
‫だから､ 例えば､ 3の間であるべきだ｡ 3秒と1秒｡
‫そこで､ floatのmin weightを作成し､ 0とします｡ 3秒と公開フロート最大重量｡
‫だから､ 果物の待ち時間の最大値は1/2にすべきなのです｡
‫そして､ そのようにすれば､ unityの中で簡単に追加することができます｡
‫それができるようになるわけです｡
‫STARTメソッドの中で､ この時間の経過後に常にフルーツを作るルーチンを開始したいのです｡
‫そして､ そのためには､ スタート・コード・ルーチンというメソッドを使う必要があるのです｡
‫そして､ ここでわかるように､ STARTコードルーチンはAIエニュメレーターを必要とします｡
‫何かを開始するためには､ メソッドを開始したり､ オブジェクトでメソッドを開始したりするのと同じです｡
‫でも､ 本当に欲しいのは､ こちらの方なんです｡
‫AI 列挙体を必要とする最初のオーバーロードです｡
‫そのため､ スタートコードルーチンにはもちろん､ 列挙子が必要です｡
‫では､ それをコメントアウトして､ AI列挙体を作ってみましょう｡
‫そのためには､ AI列挙体を返すメソッドを作る必要があり､ それは非総合的なコレクションに対する単純な反復処理をサポートする｡
‫これで､ このメソッドを複数回呼び出して､ スタートコードルーチンを実行し､ 先に進んで果物を生成することができるようになります｡
‫そういう呼び方と､ 真実でありながらここで確認したいことがあります｡
‫つまり､ このコードルーチンが実行される限り､ 私はフルーツを生み出したいのです｡
‫そこで､ このワイルドループの中でやりたいことは､ yield returnです｡
‫だから､ まだ使ったことのない基本的なreturn文ではない｡
‫新規待ち時間4秒に使えるイールドリターンです｡
‫したがって､ ある時間経過後に何かを行いたい場合は､ この列挙体をyield returnで使用することができます｡
‫数秒待つと､ 最小重量と最大重量の間のランダムな値が表示されます｡
‫そして今､ 私がここで行うことは､ 単にログと果物のデバッグ､ より多くの果物を得る､ スポーンされることです｡
‫わかりました｡
‫そのスクリプトと実際に私たちのコードルーチンの中でspawn fruitを呼び出す必要があるとしましょう｡
‫もちろんです｡
‫だから､ 果物を産む｡
‫これで､ すべてがうまくいく｡
‫そして､ もう一度スクリプトを保存して､ Unityに戻りましょう｡
‫では､ この中に新しい空のオブジェクトを作りましょう｡
‫そして､ それをスパナと呼ぶことにしています｡
‫そして､ ここにあったオレンジを全部処分しよう｡
‫リードとそれはBoehnerオブジェクトは､ もちろん､ コンポーネントが必要です｡
‫そこで､ ここでBoehnerというスクリプトを検索してみよう｡
‫そして､ ご覧のように､ 最大重量における最小重量をいつでも変更できるようにしたのです｡
‫さて､ スポーンする果物は､ もちろんスポーンフルーツ､ つまり産卵させたい果物のことです｡
‫そして､ 私たちの場合は､ オレンジです｡
‫では､ スポンサーに移動して､ オレンジをここにドラッグしてスポーンさせましょう｡
‫そして今､ それを始めましょう｡
‫もちろん､ コンソールに表示されるのは､ 5個､ 6個､ 7個､ 8個の果物が生まれるところだけです｡
‫そのため､ 常に果実が生み出されている｡
‫だからいいんです｡
‫しかし､ もちろん､ まだあまり見えていないので､ それを変えていく必要があるでしょう｡
‫わかりました｡
‫そこで､ ここにあるスポーンからスポーンすることができるのですが､ ご覧のように位置が決まっているのです｡
‫さて､ 来ましたね｡
‫よく見えないんですよね｡
‫そこで､ ギズモを追加してみましょう｡
‫右側のスパナの名前の横に､ そのスパナの外観を追加することができます｡
‫そこで､ ご覧のように､ この紫色を使うことにしました｡
‫これがスパナになるわけですね｡
‫これはあくまでもギズモで､ ゲーム内では見えないけれども､ オブジェクトがどこにあるのかを確認することができるんです｡
‫だから､ スプライトとかアニメーションとか､ そういうのは一切ないんです｡
‫マッチングも何も､ そんなことはない｡
‫そして､ この小さなギズモだけが､ 私のゲームビューのどこにあるのかを示してくれるようになりました｡
‫ということで､ 現状はこんなところと｡
‫ちょっと引きずってみようか｡
‫実は､ まず位置決めをしよう､ リセットしようということなんです｡
‫だから､ 000になるんだけど､ それをスポーンとか言ってね｡
‫あるいは劇を産み出す｡
‫ここに産み落とされるわけですね｡
‫では､ そのスポーンの場所を複製して､ 少し横にドラッグしてみましょう｡
‫そして､ それをもう一度複製して､ もう一度､ それも横にドラッグしてみましょう｡
‫これで､ このポジションに関する3つのポイントがわかったわけです｡
‫まだ心配しないでください｡
‫後日､ 確認させていただきます｡
‫適材適所で遊びながら､ 最適なポジションが何かを探っていきます｡
‫さて､ 横にある2つの産卵場所についてです｡
‫だから産卵場所にも｡
‫そして私の場合､ それは最初の1つです｡
‫あなたの場合､ それは違うものかもしれませんが､ ここで決める人は､ 単純にトップを狙えばいいというものでもないでしょう｡
‫中心に向かってわずかに射出するようにする｡
‫だから､ 回転させる必要があるんです｡
‫このように回転させることもできますので､ そのように回転させるか､ あるいは単純にここに値を追加するかです｡
‫だから､ 30度回転して､ プラス2を産み出すと言うことです｡
‫私の場合､ Z値は-30であるべきです｡
‫これで両方が少しづつ回転するわけです｡
‫わかりました｡
‫では次に｡
‫では､ スクリプトに戻りましょう｡
‫さて､ これで -- スポーンフルーツに､ さまざまなスポーン場所を用意する必要があります｡
‫スポーンはスポーン場所を知っている必要があります｡
‫それでは､ transform 配列を作成して､ これがスポーン場所となります｡
‫そして､ 今度はスポーンフルーツの中で､ デバッグだけでなく､ 作成されたフルーツの位置を変形させたいと考えています｡
‫そのため､ 変換tはランダムな範囲の位置に生まれ､ ドット長0からスポーン位までのランダムな位置である必要があります｡
‫つまり､ スポーンする場所をいくつ作っても､ その中のランダムな位置に､
‫作った果物の位置を割り当てるということです｡
‫つまり､ 1番目の産卵場所か､ 2番目か､ 3番目か､ そのどちらかになるということです｡
‫だから､ いくつ割り当てても､ それがここで言うスポーンプレイスドットの長さなのです｡
‫それが､ ここで選びたい産毛の場所です｡
‫つまり､ ゲーム・オブジェクトを作成し､ それをインスタンス化し､
‫果実をスポーンさせるということです｡
‫つまり､ Tの位置に果物が生まれるように､ ここで作成したtransform変数､
‫t dot positionとDT dot rotationをオフにするのです｡
‫よし､ Unityに戻って確認しよう｡
‫まだポイントを割り当てていませんし､ スポンサーもいませんので､
‫変更しましょう｡
‫そうですね｡
‫削除したものは､ 空のスポーンが作成されるんですね｡
‫そして､ ここにコンポーネントスクリプトを追加してみましょう｡
‫そして､ スポンサーであった｡
‫あとは､ 果物の産卵が必要です｡
‫そして､ まずはやはりオレンジから｡
‫そして次に､ スポーンプレイスが必要です｡
‫そこで､ スポーン場所がいくつあるかを割り出す必要があります｡
‫そして､ 今のところ3種類のスポーン場所があります｡
‫そして､ さまざまなスポーン場所を､ このスクリプトにドラッグするだけです｡
‫わかりました｡
‫では次に､ ゲームを開始して何が起こるか見てみましょう｡
‫そして､ 今お見せしたように､ 私たちのゲームではランダムに果物が作られるのです｡
‫さて､ この景色で見えていないもの｡
‫そこで､ 非アクティブにして､ 再生時に最大化しましょう｡
‫ここで起動したらどうなるのか見てみましょう｡
‫ご覧のように､ オレンジを作成します｡ オレンジは決して削除しないので､ 何個も何個も作成することになります｡
‫今のところ､ それを処分することはありません｡
‫それは､ 私たちが気をつけなければならないことです｡
‫もちろんです｡
‫そしてもちろん､ 撮影する方向も変えていかなければなりません｡
‫ですから､ 現状ではただ落ちているだけで､ 空中に飛ぶための力が加わっていないのです｡
‫だから､ そこを変えたいんです｡
‫では､ そのようにしましょう｡
‫果物に少し力を加えてみよう｡
‫そして､ それをどうすればいいのか｡
‫果物のDXに構成剛体を乗せ､ 力を加えながら､ どのようにすればよいのでしょうか｡
‫だから力を加えれば､ 2種類の過負荷が発生するのです｡
‫ここでは､ フォースとモードというものを使っていきます｡
‫つまり､ かけたい力が10倍になって変身するわけです｡
‫つまり､ ここに割り当てたのは単なる値です｡
‫そして､ フォースモードへ｡
‫DX だから､ 強制的に上げたい方法はインパルスになるんです｡
‫だから､ 小さいからこそ､ そのような衝動に駆られるのです｡
‫わかりました｡
‫スクリプトを保存して､ Unityに戻りましょう｡
‫どうなるか見てみましょう｡
‫そして､ ご覧のように撃ち上がってはぶつかり合い､ また落ちていくのです｡
‫今､ 彼らにないのはローテーションですから､ そこが嫌なんです｡
‫では､ それぞれの場所について見てみましょう｡
‫これで､ もちろん私たちのスポーン場所には､ もうスポーンやスクリプトが必要です｡
‫では､ そのremoveコンポーネントをスポーン箇所から取り除いてみましょう｡
‫わかりました｡
‫そこで､ ここでもスポーンを削除してみましょう｡
‫よし､ では早速､ 果物が無限にある問題を解決して､ 少なくとも､ しばらくして果物が壊れないようにしよう｡
‫では､ そうしましょう｡
‫そこで､ ここでは5秒後にフルーツを破壊することにしています｡
‫ここでインスタンス化したゲームオブジェクトは､ 5秒後に破棄したいと思います｡
‫だから､ 宙に浮いてからすぐに､ 落ちてしまったんです｡
‫だから､ 壊してもいいんです｡
‫では､ ここで見てみましょう｡
‫何が起こるかというと､ スポーンして､ 数秒後に破壊されるのです｡
‫だから､ 5､ 6､ 7､ 8とあるんです｡
‫そして､ ご覧のように､ またオレンジが破壊されてしまうのです｡
‫それはいいことだ｡
‫ローテーションさせるというのは､ やはりうまくいきませんね｡
‫つまり､ スポーン箇所を回転させた方向に力が働くわけです｡
‫では､ その様子を見てみましょう｡
‫そして､ 回転が足りないのは､ あることが関係している｡
‫では､ コードに戻りましょう｡ ここで行うのは､ 何かを10倍に変換することです｡ この場合､
‫スピナー自体に力を加えるようにスクリプトを変換します｡
‫しかし､ 私たちが望むのは､ 果実を変身させることです｡
‫T字の力を加えたいのですが､ これは変形位置から来るもので､ スポーン位置から来るものです｡
‫だから､ 私たちのスポーンやそれ自体からではなく､ 私たちのスポーンの場所からにしたいのです｡
‫そして､ 私たちのスポーン場所には決まったローテーションがあります｡
‫では､ もう一度､ 果物がどのように違う方向に飛んでいくかを見てみましょう｡
‫そして､ ご覧の通り､ それぞれ違う方向に飛んでいます｡
‫そして､ 見てみましょう｡
‫ここで値を弄ったので､ こっちは30､ あっちは-30になるはずです｡
‫そして､ 中央のスポーン場所をゼロにすればいいのです｡
‫では次に､ もう一度やってみましょう｡
‫そして､ それらが異なる方向に向かって飛び､ 現在ではお互いに触れ合うこともできるのがわかるでしょう｡
‫でも､ それも後回しにするんです｡
‫さて､ スポーン場所の位置ですが､ 現状ではどれも少し高すぎるため､ 変更する必要があります｡
‫そこで､ すべての値をマイナス5程度に少し下げてみましょう｡ 実際に今ここでマイナス5を入力することもできます｡
‫次に､ 撮影時のパワーを変えたい｡
‫では､ 現在どのように産卵しているのかを見てみましょう｡
‫だから､ ご覧のように､ ほとんど中心部までいかないんです｡
‫だから､ それを変えよう｡
‫そのためには､ トランスフォームを変更する必要があります｡
‫だから､ 今は10人です｡
‫しかし､ 私たちが持ちうるのは､ 彼らが撃たれるランダムな力です｡
‫さらに､ public float main force が 12､ public float max force
‫が 17 のように､ 2つの変数を作成しましょう｡
‫ですから､ これらはあくまで私が遊んでみた値です｡
‫そして､ 今度はランダムな範囲のmin forceとmax forceを掛けてみましょう｡
‫これで､ ランダムな値を与えて､ 12から17の間でランダムに力を加えることができるようになりました｡
‫だから､ 私たちの産みの親の中で､ それを変えることができるようになるのです｡
‫そのため､ 最小力と最大力を確認することができます｡
‫では､ それを始めましょう｡
‫そして､ それが良い値かどうかを直接チェックすることができます｡
‫見ての通り､ 彼らは上に飛び､ さらにここで最小フォース15､ 最大フォース25とすると､ スクリーンから完全に飛び出し､
‫再び落下することさえあるのが分かるでしょう｡
‫だから､ 12と17は結局いい値なのかもしれない｡
‫わかりました｡
‫スプーナーについては以上です｡
‫実は､ まだ果物をスライスすることができるので､ いくつか産んでスライスしてみましょう｡
‫このように､ シーン内に複数あっても､ スライスすることができます｡
‫でも､ もちろん､ キーボードではなくマウスで行いたい｡
‫素晴らしい｡
‫そこで､ 次の動画では､ ブレードの様子をご覧いただきます｡
‫そこで､ ブレードを作成することにします｡
‫見てください｡
‫現地でお会いしましょう｡