ExitTimeはデフォルトで存在する変数。遷移前のアニメーションが終わってこの秒数経過すると、次のアニメーションに遷移する。Transitionで起こりうる問題:ジャンプやしゃがみなど、ボタンを押した瞬間にしてくれないと困る。ジャンプなどのモーションは、その瞬間から飛ぶのがよい。助走をつけたモーションだと、ボタンを押しても助走が始まり、なかなかジャンプしてくれずに操作性が悪くなる。BrendTree:一つのステートで、条件が変わると別のアニメーションをいくらかの割合で合成させる機能。「歩行」ステートで、通常時のアニメーションがAとした場合、スピードが速くなったらBのアニメーションをやる、というようなもの。スピードが速くなったら突然Bになるのではなく、徐々に滑らかに変化する。インスペクターで+で条件を追加する。デフォルトであり(追加可能)、これらがどの値に達すると変化するかを真ん中の数値(スレッショルド)で調整する。これを大きくすると、早くアニメーションするようになる。右のチェック部分は、ミラーリング。逆方向のアニメーションができる。ほかのパラメータはあまり気にしなくていい。スレッショルドを自動で計算したりするもの。automateは自動で均等に計算するもの。1Dは一つの値によってモーションを分ける。2Dは二つの値によってモーションを分ける。赤い丸が現在の位置で、青いひし形は2つの条件の影響範囲を示す。青のひし形の濃い部分ほど影響が強い。赤の丸を動かして、影響の強いひし形は大きく表示されるのでわかりやすい。Simple,Directional,Cartesianの違いは、ひし形の影響範囲の仕方が異なるだけ。AdjustTimeScaleで時間の早さを自動調整する。サブステートマシン:CreateSub-StateMachineでサブステートマシンを作れる。いくつかのステートマシンをまとめたもの、というだけ。サブステートマシンをダブルクリックで、中身を編集できる。Upで外にあるどれかと接続できる。アニメーションレイヤー:Animatorの左上で、レイヤーを追加できる。追加すると、ボディマスクとブレンディングを指定できる。上半身だけ別の動きをさせたい場合、上半身だけ動くボディマスクを適用し、ブレンディングでOverride(上書き)をすればよい。元のアニメと半々くらいで混ぜたいならAdditiveにすればよい。レイヤーの実行順は上からであり、下のほうにOverrideがあると、上のレイヤーを上書きする。レイヤーの時間の長さ異なる場合、同期することはなく、時間のない部分については空白のまま何もアニメーションしない部分となる。ソロとミュート:ステートのインスペクターで、ソロにすると、そのステートからのほかの遷移は無効になる。ミュートは文字通りそれが無効になる。これはステートのインスペクターでやるべきで、トランジションでも同じ機能があるが、非推奨らしい。ターゲットマッチング:アニメーションの最中、体のある部分が、ある時間のときに特定の場所にもっていきたいことがある。そのときはMatchTargetというものを使う。0.223f);のように使う。///アニメーションの編集(Animationウインドウ)Window,Animationで、アニメーションを編集・追加できる。スプライトではここでの編集が必須。ヒエラルキーで編集するオブジェクトを選択すると、編集できる。ヒエラルキーでオブジェクトを選択し、Animationで左上あたりの空白で新規追加すれば、アニメーションを作れる。アニメーションの追加の場合、AddCurve。やり方はLightwaveと同じで、時間位置に赤線を持ってきて、オブジェクトを動かせばそれでキーフレームが追加される。インスペクターでは、赤くなっている部分はその時点で値を変えればキーフレームが追加される。下のほうでドープシートかカーブか、表示を選択できる。カーブでは、キーフレーム間の補完カーブの編集ができる。キーフレームの場所で右クリックして、カーブの種類を変更できる。スプライトの場合、分割前のスプライトをヒエラルキーに出し、それをAddCurveのSpriteRendererで、インスペクターでSpriteを追加、インスペクターでSpriteの内容を変えれば瞬時に変わるアニメーションが作れる。新規追加時にアニメーションコントローラーも追加されるので、メカニムを使うことが可能。親子付けされているオブジェクトなら、親オブジェクトのAnimationを作ることで、AddCurveの中に子オブジェクトという項目ができ、子オブジェクトのアニメーションも一度に編集できる。ほかにもいろいろアニメーションできる。スクリプトのオンオフも調整できる。3Dモデルのanimation:ボーンや移動に関してはメカニムを使えばいいが、テクスチャを動かす場合はこれを使うことになる。Material_Reference[0]でキーフレームを作り、いつもどおりMaterialをヒエラルキーにドラッグすることで、その地点でMaterialを変更できる。テクスチャの内容を変更させる場合はこうする。Material_STで、タイリングの数やオフセットを変更できる。テクスチャの位置を変更するにはこうする。テクスチャに動画を貼りこむにはProバージョンでないといけないが、アニメーションの数だけ静止画を用意し、Material_Referenceで画像を変更し、オフセットで移動させれば、テクスチャのアニメーションはできる。アニメーションイベント:スクリプトを作り、今Animationを使っているオブジェクトに適用、スクリプトの中に関数を入れておくと、アニメーションの特定の時間でその関数を実行できる機能がある。Animationの上野黒い部分で右クリック、イベントを追加し、適用する関数を指定すると、そのタイミングで関数が起きる。関数に引数がある場合、引数をアニメーションの中で指定できる。Kitアセットストアに置いてある。unity製のアセット。これを改良して人間のアニメーションを作れる。デフォルトアバターを画面に配置する。ヒエラルキーのデフォルトアバターを選び、インスペクターでセットアップ。Componentでスクリプトを入れる。direction);キーの入力を受け付ける記述。矢印キーで、右を押せば右へ、左を押せば左へ移動する。これだけでは動かせない。180);実際にどんな速度で、どの方向へ動かすかの記述。sppedの数値で走る速さを、directionの数値で回るときの回り角度を設定する。100);Inputはキー入力受付だが、いろいろな方向性を持つ入力を受け付けるらしい。Horizontalは左右、Verticalは上下の受付。locomotion.Doの数値で、水平、垂直の移動速度を決める。この応用では、左右キーではその場で回るだけで、上キーを進むとその方向へ進む。バイオハザードのような操作感になる。Controller新規でプロジェクトを作るときに選択できるコンポーネント。人体に適用することで、人体に当たり判定を作ってくれる。Physicsにする。これで物理演算が適用される。Controllerをコンポーネントから適用する。衝突判定に関係するスクリプトはGeo_grpに組み込む。これはAddForceの作用を受けない。普通の物理演算が適用されない。JointやForceを与えたい場合、新たにRigidbodyを実装して行う。当たり判定はY軸方向のみなので、人間が向きを変えたり重力方向が変わる場合、新たにRigidbodyを適用する必要がある。ControllerをRigidbodyの親にするとJointのような動作になる。注意点:物理演算と相性が悪いらしく、あまり正しい動きをしないらしい。可能なら自前のスクリプトで動かすべき。///////////Animatorアニメーションをステート(状態)とトランジションに分けて作成し、変化させる。パラメータ:左下のパラメータは、「これが○○になると別のステートにトランジションしながら遷移する」という意味。+で新規作成、-で削除。パラメータにBoolの「Jump」というパラメータを作成し、トランジションのConditionでJump,trueにすると、スクリプトでJumpをtrueにしたときにその方向へトランジションが起こる。中央部の長方形と上の矢印(始まりと終わり)を動かすことで、遷移するタイミングやトランジションの重なり時間を調整できる。ステート(四角):新しくアニメーションを登録するには、右クリックで新規ステートを作成し、Motionにその動きを入れる。トランジション(矢印):Conditionsでその動きが行われる条件を入れる。Timeはデフォルトであるもので、その動作が終わると自動的に遷移するもの。/////////例文//この記述はデフォルトアバターに組み込む//あらかじめメカニムのアニメーターで、Boolパラメータ「Jump」を作っておく。そこにジャンプモーションを入れておく。//さらに新しいステートメント「Jump」に歩いているステートから互いにトランジションさせたジャンプするステートを作っておく。//スペースキーを押すとJumpブールがtrueになるため、アニメーターは歩きからJumpへトランジションする。//Locomotionというベースステートの名前。false);}}}//////////////////経路探索(Navigation機能)Pro専用?自動追跡の機能。敵キャラクターが主人公を自動で追いかける、というようなことができる。追跡は最短経路で行われる。手順:Window,Navigationでパネルを出す。最初に、追跡するキャラがどこを通れるか、通れないかを決める。これはポリゴンで決める。このポリゴンをナビメッシュという。通れるところは地面のような「平面」で、通れないところは壁のような面で決める。Staticを有効にする。SceneFilterはヒエラルキーで余計なオブジェクトを表示しなくさせるだけ。Layerは、デフォルトなら普通に歩くべきところ、NotWalkableは、歩けそうなところでも歩けなくする。Jumpはたぶん、ジャンプして飛び越えるところ。自動である程度計算してくれる。Bakeインスペクターで調整する。Radius:キャラクターがどれだけ壁まで近づけるか。大きくすると、通れる部分が狭すぎて動けなくなったり、天井に頭がつっかえて動けなくなるので注意。Height:ナビメッシュの通れる部分は地面で指定するのだが、その地面からこの高さまでは通行可能となる。キャラクターの背丈がこれを越えると頭がつっかえて通れなくなる。MaxSlope:この角度以上だと壁とみなされ、通れなくなる。基本、地面は通れて、壁は通れなくなる。地面に適用したときは、Defaultで通れるが、NotWalkableは通れない。壁に適用したときは、DefaultでもNotWalkableでも通れない。StepHeight:地面の凹凸があるとき、この高さまでは凹凸を無視して通れるようにする。調整したら、Bakeを押す。気に入らなければClearでやり直す。GetComponent.();agent.SetDestination(targetPoint);のようにする。後は目的地をセットするだけ。オフメッシュリンク(Proのみ):2つのナビメッシュの橋渡しをするリンク部分を作成し、条件によってそこを通過できたりできなくしたりできる。特定の部分を強制的に通過させることもできる。レイヤー:レイヤーというのがあり、これで通過コストをそれぞれ設定できる。何かというと、通常は最短距離を通るのだが、コストを大きくするとハイリスクということになり、避けるようになる。これにより、必ずしも最短距離を通らないように設定できる。Layerというのがあるが、これがそのコストのレイヤー。デフォルトで3つあるが、右のLayersで追加可能。新たにコストを設定し、そのレイヤーをオブジェクトに設定することで、ハイコストなナビメッシュを作成できる。コスト値は1以上の値を使用すべき。ないとおかしな動きをすることがある。実際には思うように追跡できないかも知れず、試行錯誤が必要なことが多い。///////////////////コンポーネント基本:設定マークで、コンポーネントの設定をコピーしたり、上下に移動したりできる。コンポーネントのチェックをはずすことで、非アクティブにすることができる。親オブジェクトを非アクティブにすると、子オブジェクトも非アクティブになる(ただしこのとき子オブジェクトのactiveSelfの値は変わらない)これは非アクティブ効果が親からオーバーライドされているからなので、activeInHierarchyを使えばオーバーライドも含めてアクティブかどうか判定できる。///MeshRendererこれをオフにすると見えなくなる。////////////Rigidbody系///Rigidbody2D物理エンジン。