‫この動画では
‫キャラクターのアニメーションを担当することになりました｡
‫というわけで､ さっそくキャラクターを作ってみましょう｡
‫そこで､ assetsから新しいフォルダを作成し､ そのフォルダを1つのキャラクターと呼ぶことにしましょう｡
‫このキャラクタープレハブは､ アセットストアで入手したものとは異なるものです｡
‫私たちは､ 例えば､ アニメーションのコントローラーを削除し､ 新しいスクリプトを作成したりしました｡
‫オブジェクトをアニメーション化するには､ アニメーションコントローラが必要です｡
‫そして､ その1つをチャー・アニメ・コントローラーと呼ぶことにしています｡
‫つまり､ char underscore anim underscore controllerです｡
‫このように､ char anim コントローラは､ かなり正確な機能を持っています｡
‫では､ それを開いて､ アニメーターコントロールをフルスクリーンにしたいと思います｡
‫そこで､ その中にゲームをドラッグして､ 「アニメーター」に移動します｡
‫わかりました｡
‫つまり､ ここにはすでにいくつかの州があるのです｡
‫ナニー・ステート（乳母国家）があるのです｡
‫入り口があり､ 出口がある｡
‫そして､ それらはアニメーションコントローラーを作るたびに自動的に作られるものです｡
‫だから､ 今必要なのは､ 新しい国家なんです｡
‫このフィールドを右クリックして､ 状態を作成すれば､ いつでも新しい状態を作成することができます｡
‫そして､ 空の状態を作成するのです｡
‫ご覧のように､ すでにエントリーから新しい状態への遷移が作成されているのです｡
‫エントリーとは､ アニメーターが目覚めるときのポイントです｡ つまり､ プレイヤーが目覚めたときが､ エントリーポイントになるのです｡
‫そして､ そのままトランジションを経由して､ どの状態にも移行します｡
‫アニメーションやステートが「run」であるため､ いずれかのステートをクリックしたら､
‫名前を変更する必要があります｡
‫そして､ そのために必要なモーション､ つまり実際のグラフィカルなアニメーションがすでに存在しているのが素晴らしいところです｡
‫それは､ この「Run」というアニメーションクリップです｡
‫それを全部ウォークジャンプで降りてきてもらえばいいんです｡
‫これらは､ 私たちのアセット内にあるものをダウンロードしたものです｡
‫でも､ 使いたいのはrunです｡
‫では､ この動きを簡単に始めて､ 開いて､ 実行して､ これが何をするのかもっとよく見てみましょう｡
‫右側のモーションにある「run」をダブルクリックすると､ 「common people and animations」の下にある「Super
‫Saiyan character free pack, free sample」が表示されます｡
‫では､ ランを見てみましょう｡
‫編集して､ ここに表示されるものを見てみましょう｡
‫いくつかの情報がありますが､ 私たちにとって重要なのは､ ループ時間が有効であることです｡
‫つまり､ プレーヤーは常にこの部分を複数回繰り返すアニメーションを持ち､ その長さは0です｡
‫667であり､ 0である｡ 66 7秒
‫つまり､ 3分の2秒後にこのアニメーションが行われ､ ループタイムやループタイムが有効になると同時に､ このアニメーションが繰り返されることになります｡
‫では､ ループタイムを解除して､ ゲームを見てみましょう｡
‫では､ 実行してみましょう｡
‫では､ 次にキャラクターでテストしてみましょう｡
‫それでは､ キャラクターに移動して､ 作成したチャートとコントローラーをアニメーターにドラッグしてみましょう｡
‫これがここで作成したコントローラで､ エントリから直接実行に移ります｡
‫では､ どのように見えるか見てみましょう｡
‫そして､ その選手が走って走って､ たとえ転んでも気にしない姿が目に浮かぶ｡
‫彼はいつもこのランのアニメーションを持っていて､ 完璧ではないのです｡
‫後ほど変更します｡
‫ですから､ 彼が倒れたらすぐに､ もちろん別のアニメーションを用意したいのです｡
‫では､ コントローラに戻って､ 実際にもう一度､ 実行アニメーションを表示してみましょう｡
‫ここで､ 実行モーションを編集し､ ループタイムを無効にします｡
‫では､ もう一度コードを実行するか､ ゲームを実行してみましょう｡
‫ご覧の通り､ ループタイムはまだ有効です｡
‫だから､ ループタイムを適用して解除して､ スタートするんだ｡
‫そして､ このランアニメーションを1回だけ､ あるいは1回だけ繰り返して､ その後はもう走っていないのがわかると思います｡
‫このループタイムはそのためのものなんですね｡
‫この機能を有効にすると､ このアニメーションが非常にきれいに繰り返され､
‫プレーヤーが美しく動作するようになるからです｡
‫だから今は解除した､ もちろんもう一度｡
‫では､ もう一度実行してみましょう｡
‫ちなみにそれを､ 今回のFB Xの実行に適用して､ もう一度実行してみましょう｡
‫これで､ 彼が常にこのランのアニメーションをするのがわかると思います｡
‫では､ ゲームを開いているときに､ 同時にこのランの中にいるとどうなるのか見てみましょう｡
‫ちなみに､ それを移動させたい場合は､ マウスの中ボタン､ ミドルボタンを押すといい｡
‫それでは､ ゲームを動かして何が起こるか見てみましょう｡
‫このように､ 実行状態の下にある青いバーは､ アニメーションの繰り返し､ または現在の位置､
‫またはモーションを示しています｡
‫この3分の2秒というのは､ 結構､ 1回の走行､ 1回の走行の繰り返しが3分の2秒ということなんですね｡
‫わかりました｡
‫これで､ ランのアニメーションができましたが､ それだけではありません｡
‫もうひとつ､ 落下するアニメーションも必要です｡
‫そこで､ プレイヤーが落下するたびに､ 次のようなアニメーションを表示させたいと思います｡
‫そして､ その状態が呼び水となるのです｡
‫落下して､ そのモーションは飛び降りることになる｡
‫そこで､ ジャンプフロートからジャンプアップ､ ピックアップなど､ さまざまな工夫をしています｡
‫そして､ 今必要なのは､ 飛び降りることです｡
‫それでどうするかというと､ 下にジャンプして､ 実はもう一度下にジャンプするんです｡
‫そこで今度は､ これをフローと考えることができるので､ ランからフォールへの移行が必要です｡
‫つまり､ アニメーションはエントリーから始まり､ ランになり､ ある時点でフォールディングになるわけです｡
‫そこで､ プレーヤーが倒れるときは､ アニメーションで倒れながら走りたい｡
‫そこで､ トランジションが必要です｡ トランジションを作成し､ それを落下にドラッグして､ 直接接続することができます｡
‫ここでは､ インスペクターでランからフォールへの移行が行われているわけです｡
‫直に見ることができます｡
‫そして､ このトランジションがいつトリガーされ､ 実行されるべきかを知るために必要なことは､
‫落下が変化するたびに､ 条件を追加することです｡
‫パラメータが必要なんです｡
‫ご覧の通り､ まだパラメータはありません｡
‫そのために新しいパラメータを作成する必要があります｡
‫左側には､ レイヤーが表示されていますね｡
‫そして､ このパラメータピースです｡
‫そこで､ このタブのパラメータをクリックし､ プラス記号をクリックします｡
‫そして､ パラメータをfloat､ int､ bool､ triggerの4種類から選べるようになりました｡
‫この場合､ トリガーを使用することになります｡ というのも､ プレーヤーが地面に物理的なものを置かなくなったとき､
‫つまり､ プレーヤーの下に物理体があるときはいつでも､ このトリガーを設定したいからです｡
‫では､ このトリガーを作ってみましょう｡ このトリガーは､ is fallingと呼ぶことにします｡
‫次に､ この小さな矢印または矢印付きの小さな線の上にあるトランジションをクリックして､
‫条件として下降を選択します｡
‫では､ それを入力してみましょう｡ ちなみに､ is fallingのアニメーションが見たい方は､ こちらをご覧ください｡
‫ここで見ることができますし､ 実はこれがランニングアニメーションなんです｡
‫それでは､ 落下アニメーション､ ジャンプダウンアニメーションをご覧ください｡
‫これがジャンプダウンアニメーションであることがわかると思います｡
‫あとは､ このトリガーをどこかにセットして落下させる必要があります｡
‫そして､ そのための最適な位置が､ 私たちのコード､ つまりスクリプトに戻るということです｡
‫それでは､ キャラクターコントロール､ キャラクターコントロールに行きましょう｡
‫そして､ updateメソッド内で､ まだ地面に当たっているかどうかをチェックすることになります｡
‫そのためには､ ここに新しい変数が必要です｡
‫実は2つの新しい変数があります｡
‫ひとつはパブリック｡
‫そこで､ パブリックな1つのトランスフォームレートスタートを作ってみましょう｡
‫なぜなら､ 私たちが行うのは､ キャラクターの下から配列を実行して､ 何か肉体にヒットするか､ まだ何かにヒットするかどうかを確認することだからです｡
‫そして､ 当たらない場合は､ トリガーをかけたいと考えています｡
‫もちろん､ アニメーターが必要なので､ private animatorを呼び出し､ updateメソッド内で､ 赤いキャストのヒットを必要とします｡
‫それは何かというと､ レッドキャストから情報を取り戻すために使われる構造なのです｡
‫つまり､ プレーヤーの底を見るために赤いキャストを投げて､ 何かあるかないかをチェックするわけですね｡
‫そして､ これをヒットと呼ぶことにします｡ ここでifリクエストを行うか､ if条件を追加することができます｡
‫物理ドットのリキャストと､ この中で位置､ 方向､ アウトを与えますが､ これはこれではありません｡
‫だから､ ここにはいくつものオーバーロードが､ たくさんある｡
‫そのうちの一つを使うことになりました｡
‫ということで､ 今からパラメータを入力します｡
‫1つはRay Startで､ これはここで作成した変換変数Ray start dot positionです｡
‫つまり､ これがレイの原点であり､ レイが始まるべき場所､ そしてレイが向かうべき場所なのです｡
‫そして､ マイナストランスフォームアップで､ 下に変形させるということです｡
‫だから､ 下がってください｡
‫つまり､ 光線の方向､ そして､ 単純にヒットとなるアウトをチェックするのです｡
‫そこで作成したレイキャストと､ レイキャストの長さが必要なので､ 数学のfドット無限大を使います｡
‫だから､ それが偽りであればいつでもどんどん下がっていくはずです｡
‫ということは､ 当たったものは何もないということです｡
‫だから､ 冒頭にこの感嘆符を使ったんです｡
‫だから､ 物理レイやキャスト・トランスフォームなどではないと言うことです｡ ということは､ 下に向かってヒットしない場合は､ 私のアニメーションのトリガーをセットしてください｡
‫では､ どのトリガーをどのように設定するか､ アニメドットセットを行ってください｡
‫そうですね......1つは､ 今作ったばかりのものが落ちています｡
‫もちろん､ アニメーターを設定する必要があります｡ 現在､ アニメーターを設定することはありません｡
‫awakeメソッド内で初期化する必要があります｡
‫つまり､ enumはget component､ componentはanimatorと呼ばれる｡
‫さて､ これをテストする前に､ 当然ながらレイのスタートとリスタートが必要ですが､ これはトランスフォームコンポーネントです｡
‫では､ キャラクターに移動して､ 新しい空のオブジェクトを作成しましょう｡ ここでは､ 「Ray start」と呼ぶことにします｡
‫そして､ リスタートは､ この通り､ 選手の足元にあるのですが､ 選手の真ん中くらいにしたいのです｡
‫だから､ どこかにお腹か胸を付ければいいんです｡
‫つまり､ プレーヤーの内部にあるということです｡ そこから光線が始まり､ 下に向かって進み､
‫今度はプレーヤーの底に何かあるかどうかをチェックします｡
‫私たちがぶつかる箱があるのかないのか､ そう意味するものがあるのでしょうか｡
‫わかりました｡
‫これで､ Ray startをチャート・コントローラに割り当て､ そこにドラッグしてみましょう｡
‫これでトランスフォームができたので､ 今度はコードを確認してみましょう｡
‫これを実行して､ アニメーターが変わるかどうか見てみましょう｡ しかし､ 実際に変わることがわかります｡
‫それは完璧なものではないのかもしれません｡
‫では､ アニメーターを見てみましょう｡
‫Jump downは､ 私が使ったことのあるものです｡
‫では､ より良いものを探してみましょう｡
‫ここで､ 別のものを試してみましょう｡ 別の動きです｡
‫ジャンプフロートに挑戦してみよう
‫それでは､ どのように見えるか見てみましょう｡
‫これが私たちの落下アニメです｡
‫つまり､ プレイヤーが落下して死んでいくときのアニメーションは､ ほとんどこれなんです｡
‫わかりました｡
‫次のビデオでは､ ゲームを開始する方法について説明します｡ 現在､ ゲームは実行ボタンを押すたびに開始されます｡
‫しかし､ もっとうまくやる必要があります｡
‫その様子を保存して､ また次の動画でお会いしましょう｡