Chat Bubble
このアドオンは、すぐ使えるチャットバブルを提供します。同じバブルにいる人は互いに会話が可能です。
チャットバブルは、AudioroomとDynamicAudioGroupアドオンで構築されています。動的なオーディオグループを分けて、近くにいるプレイヤー同士で互いに会話を始められます。
静的チャットバブル
静的チャットバブルは、シーン内の特定の位置にあるルームです。
チャットバブルへのアクセスは、手動でボタンを押すか、自動で最大人数に達した時にロックすることができます。
同じボタンを押すか、チャットバブルからプレイヤーが離れることで、ロックを解除できます。
バブルのメッシュのマテリアルは、ロックステータスに依存します。
セットアップ
シーンは、以下を含む必要があります。
AudioRoomManager
コンポーネント
プレイヤーのプレハブは、以下を含む必要があります。
ChatbubbleMember
コンポーネントDynamicAudioGroupMember
コンポーネントNetworkLocomotionValidation
コンポーネント(Locomotion validationアドオン)、またはILocomotionObserver.OnDidMove
をトリガーするコンポーネント
チャットバブルのオブジェクトは、以下を含む必要があります。
Chatbubble
コンポーネント
ChatBubble
Chatbubble
クラスは、チャットバブルを管理します。
各バブルは、様々な形状(球・円・立方体)と、最大収容人数のパラメーターを持つことができます。最大収容人数に達したバブルにはアクセスできません。
Chatbubble
はIAudioRoom
インターフェースを実装し、AudioRoomManager
に登録されます。
また、IAudioRoomListener
インターフェースによって、AudioRoom
にAudioRoomMember
が入室/退室した時に通知されるため、チャットバブルのメンバーリストを更新できます(ローカルユーザーは、ネットワークリグにAudioRoomMember
コンポーネントを持ち、ChatbubbleMember
を継承をしている必要があります)。
ChatBubbleMember
このクラスはAudioRoomMember
を継承していて、プレイヤーのネットワークリグに追加されている必要があります。
チャットバブルを同期するためのChangeDetector
を含み、AudioRoomMember
が入室したオーディオルームがChatbubble
なら、通常のチェックを通さずに情報を受け取ることができます。
これは例えば、途中参加者視点で、(ロック中の)バブルへ入ることを禁止するために必要です。
加えて、RoomChange
メソッドによって、プレイヤーがチャットバブルに入った時に、roomID
がオーディオフィルターに追加されます(DynamicAudioGroupMember
では、2人の近接ユーザーが互いに会話できるようにするための追加条件が必要です)。
ChatBubbleLocomotionValidator
ChatBubbleLocomotionValidator
コンポーネントは、満員やロックされたチャットバブルにユーザーが入ることを防ぎます。
このコンポーネントはILocomotionValidator
インターフェースを実装しています。
そのため、プレイヤーがチャットバブルに入る(満員でなければ)ことが許可されるかをチェックできます。
allowedToMoveToChatBubbles
設定は、特定のプレイヤー(例:ボット)がチャットバブルに入ることを防ぐために使用されることに注意してください。
このクラスは、プレイヤーのネットワークリグに追加されている必要があります。
動的チャットバブル
動的チャットバブルは、特殊なチャットバブルです。2人のプレイヤーが互いに近づくと、自動的にスポーンします。
セットアップ
通常のチャットバブルのセットアップに加えて、追加のコンポーネントが必要です。
シーン:
DynamicChatBubbleManager
コンポーネント
プレイヤーのプレハブ:
DynamicChatBubbleSpawner
コンポーネント
動的チャットバブルのプレハブ:
DynamicChatBubble
コンポーネントNetworkTransform
コンポーネント
DynamicChatBubbleSpawner
DynamicChatBubbleSpawner
は、2人のプレイヤーが互いに近づいた時(この距離は、proximityDistance
パラメーターで定義されます)に、動的チャットバブルをスポーンする役割を持ちます。
プレハブは、PlayerId
が小さい方のプレイヤーによってスポーンされます。
動的チャットバブルは、2人のプレイヤー間の距離が制限を超えて離れた場合に破棄されます。
チャットバブルをスポーンしたプレイヤーが離れても、他のプレイヤー同士がチャットバブルにまだいるなら、チャットバブルは破棄されないことに注意してください。
このクラスは、プレイヤーのネットワークリグに追加されている必要があります。
DynamicChatBubble
DynamicChatBubble
はChatBubble
を継承し、チャットバブルがスポーン/デスポーンした時に、DynamicChatBubbleManager
に動的チャットバブルを登録/登録解除するために使用されます。
DynamicChatBubbleManager
DynamicChatBubbleManager
は、DynamicChatBubble
のプールを管理します。
プレイヤーがDynamicChatBubble
をスポーンすると、それがdynamicChatBubbles
リストに追加されます。
プレイヤー間の距離が変化した直後にチャットバブルを生成/破棄するオーバーヘッドを避けるため、空の動的チャットバブルがemptyBubbleConservationDuration
で用意されています。
依存関係
- AudioRoom アドオン
- DynamicAudioGroup アドオン
- Touch-Hover アドオン
- Locomotion validation アドオン(オプションケース)
デモ
デモシーンはAssets\Photon\FusionAddons\ChatBubble\Demo\Scenes\
フォルダーにあります。
ダウンロード
このアドオンの最新バージョンは、Industries アドオンのプロジェクトに含まれています。
対応するトポロジー
- 共有モード
更新履歴
- Version 2.0.1: Fix to an error triggered upon disconnection
- Version 2.0.0: First release