NetworkTRSP
NetworkTRSP
NetworkTRSPは、全てのTransformやRigidbodyを同期するコンポーネントに必要となる、関心領域周りの処理を実装している抽象基底コンポーネントです。これは、Fusionの関心領域システムと互換性を持ちます。
使用方法
NetworkTRSPは、Fusionの全てのTransformやRigidbodyの同期コンポーネント(NetworkTransformやNetworkRigidbodyなど)の基底クラスです。独自の同期コンポーネントの基底クラスにも使用可能で、関心領域の処理や今後のカスタム共有サーバープラグインとの互換性を持たせることができます。
TRSPの定義
TRSPは、Translate(位置)/Rotation(回転)/Scale(スケール)/Parent(親)の頭文字です。これらは、Transformの主要なプロパティになります。
IsMainTRSP
このプロパティは、NetworkTRSPがNetworkObjectと同じゲームオブジェクトにある場合にtrueを返し、このNetworkTRSPがNetworkObject自身の位置の表していることを示します。このデータは、NetworkObjectの関心領域の決定に使用されます。
子ゲームオブジェクト(手や頭など)のNetworkTRSP派生コンポーネントは、NetworkObjectのワールド座標を表していないため、値はfalseを返します。
状態権限者変更時のスムーズな補正
この機能は、状態権限者が変更された時に、NetworkTRSPの位置と回転の誤差をスムーズに補正し、不定期なワープを回避します。
補正はNetworkTRSP.Rencerメソッドで行われtransformに適用されます。インスペクターから調整可能なStateAuthorityChangeErrorCorrectionDeltaプロパティで設定される値を使用することで、誤差が軽減されます。0に設定すると、補正は無効になります(デフォルトは0です)。
備考:スムーズな補正を行うために、値は0.15から試してみると良いでしょう。
SetAreaOfInterestOverride()
SetAreaOfInterestOverride()によって、NetworkTRSP派生コンポーネント(NetworkTransformやNetworkRigidbody3D)は、自身の位置データのかわりに、別のNetworkObjectの位置を、関心領域の決定に使用できます。
実質的に、あるNetworkObjectを、他のNetworkObjectの関心領域のプロキシとして割り当てることができます。例えば、プレイヤーがネットワークオブジェクトを拾って手で持つ場合、持たれているオブジェクトのAreaOfInterestOverrideをプレイヤーにしたくなるでしょう。なぜなら、持たれているオブジェクトはプレイヤーの子オブジェクトとなり、関心領域の処理が無効になるからです。そうならないように、プレイヤーとプレイヤーが持つオブジェクトの関心領域は同じにしたくなります。