Mecanimデモ
このデモではPhotonAnimatorView
を使ってMecanimアニメーションを同期させる方法を説明します。Animator
とPhotonView
からPhotonAnimatorView
のコンポーネントをオブジェクトに追加します。PhotonView
のObserved Componentsリストに新しいコンポーネントをドラッグ&ドロップしてください。PhotonAnimatorView
のコンポーネントではどの部分のアニメーションを同期するかコントロールできます。
このデモでは、PhotonAnimatorView
のコンポーネントでアニメーションを同期しているキャラクタのインスタンス化を行います。デモ内の2つのインスタンスを起動すれば、送信されるアニメータパラメータ(Speed, Direction, Jump, Hi)と、クライアントが受信する値が確認できます。
Robot Kyle MecanimプレハブにはPhotonView
、Observed ComponentsリストにはPhotonAnimatorView
及びPhotonTransformView
が含まれています。PhotonTransformView
コンポーネントはキャラクターの位置と回転を同期します。PhotonTransformView
の詳細は RPG Movement デモで確認してください。
PhotonAnimatorView
PhotonAnimatorView
では同期するレイヤウェイトやパラメータを指定することができます。ゲーム中に変化があるのみレイヤウェイトを同期する必要がありますが、同期する必要がない場合もあります。
パラメータも同じです。他の要素からアニメーションの値を得られる場合があります。例えば、速度の値を正確に同期しなくても、同期された位置の更新を使って値を推定することができます。同期するパラメータは可能な限り少ない方が良いです。
各値はDiscrete(個別)またはContinuous(連続的)に同期させることができます。
Discrete synchronization
の場合は値が1秒に10回送られます(OnPhotonSerializeView
内)。受信するクライアントはローカルのアニメータに値をパスします。
Continuous synchronization
の場合はPhotonAnimatorView
が追加の値を記録します。OnPhotonSerializeViewが呼ばれると(10回/秒)前回のコール以降に記録された値がまとめて送られます。受信するクライアントが順番に値を適用して、これによりスムーズな移行が実現します。このモードの方がスムーズですが送るデータ量は増えます。
補足
デモの初期構成ではSpeed(速度)はcontinuous synchronizationに設定されています。他の値は全てdiscrete synchronizationに設定されています。SpeedとDirection(方向)の値は2つのモードの違いを理解するのに最適です。Speedパラメータの受信値は送信後すぐに変化しますがDirectionパラメータの受信値は大きな間隔で時間をかけて変化します。Directionパラメータの同期モードをDiscreteからContinuousに変更した場合、よりスムーズな結果になります。(代わりにトラフィックが上がります)
PhotonAnimatorView
コンポーネントをキャラクターに適用して各パラメータの同期モードを適切な設定にしてください。