기술 자료

지원

Vivox Unity SDK

Vivox Unity SDK

포지셔널 채널 설정

Configure positional channels for spatial audio in 3D environments.
읽는 시간 1분최근 업데이트: 19일 전

게임이 포지셔널 채널에 참여하면 채널과 연결된 3D 공간에서의 사용자 위치와 방향으로 Vivox SDK를 수시로 업데이트해야 합니다. 이를 위해 클라이언트는 씬 내의 플레이어를 나타내는 게임 오브젝트와, 오디오가 연결된 활성 포지셔널 채널의 channelName을 사용하여
VivoxService.Instance.Set3DPosition(GameObject participantObject, string channelName)
메서드를 호출합니다. 추가로 TextState에 연결할 수 있지만, 위치를 설정하려면 오디오에 연결해야 합니다.
포지셔널 채널 내 참가자의 위치에 따라 누구의 목소리가 들리는지에 영향을 미치고 다른 플레이어의 소리 크기와 방향이 다르게 인식됩니다. 텍스트를 활성화하면 텍스트 메시지를 보내는 사람이 들을 수 있는 거리 이내에 위치한 사용자에게만 메시지를 보낼 수 있습니다. 포지셔널 채널은 오른손 좌표계를 사용합니다. 플레이어 아바타가 전방을 똑바로 바라보고 서 있는 경우 다음 기준이 적용됩니다.
  • X축 양의 방향은 아바타의 오른쪽 방향입니다.
  • Y축 양의 방향은 아바타의 발에서 머리로 향하는 방향입니다.
  • Z축 양의 방향은 아바타의 가슴에서 등 뒤로 향하는 방향입니다.
플레이어가 포지셔널 채널에 참여하면 플레이어의 아바타는 위치로 이동할 때까지 null 위치에 배치됩니다. 플레이어가 포지셔널 채널에 참여하면 플레이어의 아바타는 위치로 이동할 때까지 null 위치에 배치됩니다. 포지셔널 채널을 설정하고 원하는 3D 프로퍼티로 채널에 참여한 후, 액터의 위치와 방향을 Vivox SDK에 보고하면 됩니다. 다음은 포지셔널 채널에서 사용자 위치를 설정하는 방법의 예제를 보여 주는 코드입니다.
using UnityEngine;using Unity.Services.Vivox;class PositionalChannelExample : MonoBehaviour{ . . . // For this example, _nextPosUpdate has been initialized as Time.time at // game start. _localPlayerGameObject is the GameObject controlled by the local player. void Update() { . . . if (Time.time > _nextPosUpdate) { VivoxService.Instance.Set3DPosition(_localPlayerGameObject, activePositionalChannelName); _nextPosUpdate += 0.3f; // Only update after 0.3 or more seconds } . . . } . . .}
이 예제 코드는 전송된 3D 포지셔널 업데이트를 제한하는 메서드를 보여 줍니다. 예를 들면 업데이트 시도 횟수를 초당 적정한 횟수로 제한할 수 있는 update 메서드의 단순한 시간 트래킹 기술이 있습니다. 예제로 든
Update3DPosition
메서드에서는, 커스텀 CachedPosition 클래스가 플레이어의 위치와 방향을 캐시하여 값이 변경될 경우
Set3DPosition
호출을 허용합니다.