‫わかりました｡
‫では､ さっそくゲームを始めて見ましょう｡
‫ここまでは単純にUnityでゲームを起動することから始まりましたが､ プレイヤーはスペースキーを押すことでゲームを開始できるように､
‫ゲーム内でゲームを開始したいと思います｡
‫そこで､ 新しいスクリプトを作成してそれを実行しましょう｡
‫では､ スクリプトからC-sharpスクリプトを作成し､ Game Managerと呼ぶことにしましょう｡
‫あれでゲームの状態をコントロールする｡
‫では､ ここにもゲームスタイルのゲームマネージャーゲームオブジェクトを作りましょう｡
‫Game Managerに､ このスクリプトをドラッグしてみましょう｡
‫ゲームマネージャーの位置をリセットして､ ちょうどゼロの位置でクリーニングして入るようにするんです｡
‫わかりました｡
‫では､ ゲームマネージャーを見てみましょう｡
‫見ての通り､ Unityではすでに別の種類のアイコンを取得しています｡ ゲームマネージャーは非常に特殊なスクリプトで､
‫先ほど言ったように､ ゲームの状態を管理してくれるのです｡
‫ですから､ ゲームマネージャーは非常にシンプルなものになります｡
‫とりあえずメソッドを起動したり更新したりする必要はないでしょう｡
‫ゲームが開始されたかどうかの状態を表すbooleanが必要なだけです｡
‫public bool game startedと､ public void start gameというメソッドを作って､ ゲーム・マネージャー自身の外からアクセスしたり､
‫使えるようにパブリックにしておきます｡
‫このスクリプトでは､ ゲーム開始メソッドが呼ばれるたびに game started
‫を true に設定するだけです｡
‫ブール値が true に設定される｡
‫プレイヤーがスペースキーを押すたびに､ 固定アップデートメソッドがそれを認識し､
‫ゲームを開始するようにしたいからです｡
‫では､ そのようにしましょう｡
‫そこで､ プライベートなゲーム・マネージャーを作成し､ ゲーム・マネージャーと呼ぶことにしましょう｡
‫Awakeメソッドで初期化しないと､ ゲーム・マネージャーがnullになってしまい､ エラーになります｡
‫というのも､ ゲーム・マネージャーというタイプのオブジェクトを検索しているのですが､
‫ゲーム・マネージャーは1つしかないからです｡
‫その中にスクリプトが入っていて､ それにアクセスしたいわけです｡
‫そこで､ 今できることは､ ゲームが始まっていないかどうかをチェックすることです｡
‫つまり､ ゲームマネージャー､ ではなく､ そのゲームが始まった､ つまり､ ブーリアンゲームスタートは偽である､ ということです｡
‫そして､ 戻る｡
‫だから､ 何もしないでください｡
‫では､ そのスクリプトを保存して､ Unityに戻りましょう｡
‫チェックしてみてください｡
‫ゲームを走らせよう｡
‫そして､ プレーヤーが動いていないことも確認できます｡
‫ゲームが開始されていない｡
‫しかし､ アニメーションは健在です｡
‫つまり､ プレーヤーはまだアニメーションしているわけで､ これはいい状態ではないので解決すべきです｡
‫プレーヤーはここにいて､ 彼はフェイクランニングをしている｡
‫それでは面白くないので､ 変えていかなければなりません｡
‫実際､ 面白いんだけど､ それを変えなきゃいけない｡
‫というのも､ ここには走る状態と落ちる状態の2つしかないので､ 走ることもできますし､
‫落ちることもできますが､ あまりよくありません｡
‫では､ 空の状態を作って､ その状態をアイドルと呼ぶことにしましょう｡
‫そのために私たちの資産にはアイドルと呼ばれる動きがあります｡
‫ですから､ そのモーションを使えばいいのです｡ これは､ プレイヤーがアイドル状態のときのアニメーションです｡
‫そして今度は､ その遷移を空にして､ アイドル状態へと移行させなければなりません｡
‫そして､ どうすればいいのか？
‫まあ､ ここから単純にドラッグすることはできませんが｡
‫レイヤーのデフォルト状態として設定する必要があります｡
‫つまり､ アイドル状態はレイヤーのデフォルト状態になります｡
‫つまり､ エントリー後､ そのままアイドル状態になるわけです｡
‫なるほど､ それは素晴らしい｡
‫しかし､ 今はアニメーションを動かすことができません｡
‫では､ どのように見えるか見てみましょう｡
‫だから､ ほら､ 私たちの男が動いている｡
‫息をしている｡
‫正確に見ると､ ほんの少し動いているんです｡
‫そこで､ 次にやるべきことは､ アイドル状態からラン状態への移行です｡
‫そしてもちろん､ ここにも振る舞いや条件が必要です｡
‫だから､ アイドルからランへの移行があり､ コンディションを整える必要がある｡
‫では､ 条件を追加してみましょう｡
‫しかし､ 今のところ､ 私たちが必要としているのは､ この次の条件だけです｡
‫ゲームが開始された場合､ ランアニメーションを開始させたいので､ ゲームが開始されたかどうかを知る必要があるのです｡
‫そこでparametersでは､ 新しいパラメータを作成します｡
‫だから､ どうすればいいのか､ 思い当たる節があるのではないでしょうか｡
‫またトリガーでできるんですね｡
‫では､ 新たにトリガーゲームを作ってみましょう｡
‫このトリガーを呼び出し､ トランジションを開いて､ ゲームスタートのトランジションをここに移動または選択することができるようになります｡
‫あとはここをクリックして､ ここでゲーム開始トリガーを選択します｡
‫つまり､ ゲームを開始するための条件なのですが､ もちろんここでも設定することができます｡
‫そこで､ ゲームマネージャーのgame startedがfalseでなければ､ つまりtrueであれば､ game startedでanim
‫dot set triggerを使いたいと思います｡
‫つまり､ ここでゲームを開始し､ ここでアニメーションを開始するということです｡
‫では､ そのスクリプトを保存して確認してみましょう｡
‫そして､ まだゲームを始められないという問題があります｡ エンターキーを押して､ 選手が回転することはできますが､
‫ゲームマネージャーでゲームを始めることはまだできません｡
‫では､ そうしましょう｡
‫ゲームマネージャーで､ "A "を追加してみましょう｡
‫private void update メソッド｡
‫そして､ ここでは入力の有無を確認するだけです｡
‫つまり､ 入力ドットがキーダウンで､ キーコードがreturnとします｡
‫つまり､ 誰かがリターンを押すと､ ゲームが始まるようにしたいのです｡
‫次に､ ゲーム開始メソッドを呼び出します｡ つまり､ ゲーム開始のブール値をtrueに設定するだけです｡
‫では､ それを検証してみましょう｡
‫ゲームを一時停止して､ もう一度実行してみましょう｡
‫では､ これを開始すると､ プレーヤーが表示されます｡
‫さて､ Enterキーを押してみましょう｡ ご覧のとおり､ プレーヤーはすでに空中に浮いているにもかかわらず､
‫長い時間をかけて初めて走り出します｡
‫そして､ それは素晴らしいことではありません｡
‫そして､ 私たちはそれをすぐに変えることができます｡
‫それでは､ アイドルアニメーションをご覧ください｡
‫そして､ この中のトランジションで､ 終了時刻を選択できるようになりました｡
‫つまり､ アニメーションが終了してしまうので､ この終了時間を設けたくないのです｡
‫そして､ 約4秒かかるこのアイドルアニメーションが終わった後､ 実行状態に移行しますが､ そうしたくないので､
‫終了時間を非アクティブにすることができます｡
‫また､ 実行アニメーションや実行状態をほんの少し右側に移動させ､
‫遷移なしで実行できるようにしたいと思います｡
‫そして､ ランを動かすだけでは､ 必ず戻ってしまうのです｡
‫そこで､ この部分をIdol状態の終わりに向かって移動させ､ Run状態にする必要があります｡
‫わかりました｡
‫では､ もう一度テストしてみましょう｡ Enterキーを押した瞬間に何が起こるか見てみましょう｡
‫ご覧のように､ そのまま実行状態になります｡
‫これで､ このhas exitと同じことを､ 次の状態にすることができます｡
‫では､ 見てみましょう｡
‫エンターキーを押して落下して､ まだ2～3歩走ってから､ 落下のアニメーションをやってみましょう｡
‫だから､ ここでも同じことができるんです｡
‫終了時刻を変更して､ 先に進みましょう｡
‫直接フォローする｡
‫では､ 今度はそれをもう一度やってみましょう｡
‫見てみよう｡
‫直接落ちるか､ 落ちないか､ 直接落ちるのがわかるかどうか｡
‫だから､ 落下が止まれば､ まあ､ まだ回転はできる｡
‫しかし､ 落下が止まったり､ 始まったりすると､ すぐに落下アニメーションから始まります｡
‫なるほど､ そんな感じですね｡
‫これで､ 次の動画でゲームを始められますね｡
‫どのようにゲームを再開するかは､ これからです｡