This document is about: PUN 1
SWITCH TO

PUN Classic (v1)、PUN 2、Boltはメンテナンスモードとなっております。Unity2022についてはPUN 2でサポートいたしますが、新機能が追加されることはありません。お客様のPUNプロジェクトおよびBoltプロジェクトが停止することはなく、将来にわたってパフォーマンス性能が落ちることはありません。 今後の新しいプロジェクトについては、Photon FusionまたはQuantumへ切り替えていただくようよろしくお願いいたします。

Mecanimデモ

このデモではPhotonAnimatorViewを使ってMecanimアニメーションを同期させる方法を説明します。AnimatorPhotonViewからPhotonAnimatorViewのコンポーネントをオブジェクトに追加します。PhotonViewObserved Componentsリストに新しいコンポーネントをドラッグ&ドロップしてください。PhotonAnimatorViewのコンポーネントではどの部分のアニメーションを同期するかコントロールできます。

screenshot of mecanim demo
アニメーションデモキャラクター

このデモでは、PhotonAnimatorViewのコンポーネントでアニメーションを同期しているキャラクタのインスタンス化を行います。デモ内の2つのインスタンスを起動すれば、送信されるアニメータパラメータ(Speed, Direction, Jump, Hi)と、クライアントが受信する値が確認できます。

Robot Kyle MecanimプレハブにはPhotonView、Observed ComponentsリストにはPhotonAnimatorView及びPhotonTransformViewが含まれています。PhotonTransformViewコンポーネントはキャラクターの位置と回転を同期します。PhotonTransformViewの詳細は RPG Movement デモで確認してください。

PhotonAnimatorView

PhotonAnimatorViewでは同期するレイヤウェイトやパラメータを指定することができます。ゲーム中に変化があるのみレイヤウェイトを同期する必要がありますが、同期する必要がない場合もあります。 パラメータも同じです。他の要素からアニメーションの値を得られる場合があります。例えば、速度の値を正確に同期しなくても、同期された位置の更新を使って値を推定することができます。同期するパラメータは可能な限り少ない方が良いです。

photonanimatorview on prefab for mecanim demo
Mecanim デモ・プレハブの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コンポーネントをキャラクターに適用して各パラメータの同期モードを適切な設定にしてください。

Back to top