AudioEmitter 는 세계에 오디오 스트림을 조사합니다.
AudioEmitters 는 3D 공간 지향 구현을 위해 AudioListeners 에 의해 들어옵니다.
코드 샘플
local part1 : BasePart = workspace.Speakers.Left
local part2 : BasePart = workspace.Speakers.Right
local player : AudioPlayer = workspace.AudioPlayer
local leftEmitter = Instance.new("AudioEmitter")
local rightEmitter = Instance.new("AudioEmitter")
local toLeft = Instance.new("Wire")
local toRight = Instance.new("Wire")
leftEmitter.Parent = part1
rightEmitter.Parent = part2
toLeft.Parent = leftEmitter
toLeft.SourceInstance = player
toLeft.TargetInstance = leftEmitter
toRight.Parent = rightEmitter
toRight.SourceInstance = player
toRight.TargetInstance = rightEmitter
player:Play()
요약
속성
음향 신호의 내재 볼륨을 변경하는 각도를 기반으로 방출된 음향 신호의 볼륨을 변경합니다. 이 각도는 AudioListener 와 LookVector 에 연결된 AudioEmitter 과 관련이 있습니다.
이 AudioListeners 을 듣는 데 능숙한 컨트롤은 다음과 같습니다.
음향 신호의 볼륨을 나타내는 거리가 AudioListener 와 AudioEmitter 사이에 증가함에 따라 볼륨이 변경되는 방식을 나타냅니다.
메서드
Class.AudioEmitter 가 사용하는 각도 변화 곡선을 가져오거나 기본 곡선을 사용하는 경우 빈 테이블을 가져옵니다.
지정된 핀하다연결된 Wires 배열을 반환합니다.
Class.AudioEmitter 가 사용하는 거리 부정 곡선을 가져오거나 기본 곡선을 사용하는 경우 빈 테이블을 가져옵니다.
Class.AudioEmitter 이 사용할 각도 변화 곡선 설정 또는 제공되지 않은 경우 상수 볼륨 곡선 1 을 사용합니다.
Class.AudioEmitter 이 사용할 수 있는 거리 부정 곡선 곡선을 설정하거나 제공되지 않은 경우 역 롤오프 곡선을 사용합니다.
속성
AngleAttenuation
Class.Audio 의 볼륨 오버 앤글 커브를 나타내며, 이는 각 AudioEmitter 의 각도 및 LookVector 와 연관된 1>Class.AudioEmitter1> 의 볼륨에 영향을 줍니다.
이 속성은 내부이며 스크립트에서 액세스할 수 없습니다; 복제를 지원하기 위해 존재합니다. 자세한 내용은 SetAngleAttenuation() 을 참조하십시오.
DistanceAttenuation
Class.Audio 의 볼륨 대 거리 곡선을 나타내며, 이는 볼륨 AudioEmitter 의 볼륨 Class.Audio 이 볼륨 1>Class.Audio1> 과 얼마나 멀리 떨어져 있는지에 따라 크게 다릅니다.
이 속성은 내부이며 스크립트에서 액세스할 수 없습니다; 복제를 지원하기 위해 존재합니다. 자세한 내용은 SetDistanceAttenuation() 을 참조하십시오.
메서드
GetAngleAttenuation
볼륨에 테이블 매핑 각도를 반환합니다. 키는 0 및 180 (포함) 사이의 숫자이며, 값은 0 및 1> 11> (포함) 사이의 숫자입니다. 이 메서드는 기본 각도에 따라
반환
위에 설명된 대로 테이블 맵핑 각도를 볼륨에 대해 조정합니다.
GetConnectedWires
지정된 핀하다연결된 Wires 배열을 반환합니다. AudioEmitter 에는 하나의 "입력" 핀하다있습니다.
매개 변수
반환
GetDistanceAttenuation
볼륨에 테이블 매핑 거리를 반환합니다. 키는 0보다 큰 숫자이며 값은 0에서 1(포함)까지 범위를 설명하는 볼륨 확장에 대한 기본 거리 확장 커브입니다. 이 메서드는 기본 거리 확장 曲線이 사용되는 경우 빈 테이블을 반환합니다.
반환
GetInteractingListeners
반환
SetAngleAttenuation
Class.Audio 의 볼륨 오버 앤글 커브를 설정하여 볼륨 AudioEmitter 가 듣기 위한 LookVector 의 볼륨을 조정합니다. 1>Class.Audio1> 와 연결된 4>Datatype.CFrame.LookVector|LookVector4> 에 따라 볼륨
곡선은 볼륨 값에 대한 테이블 매핑 각도 키로 표시됩니다. 키는 0 및 0> 10> (포함) 사이의 독특한 숫자여야 합니다. 값은 0 및 1 (포함) 사이의 독특한
Class.Audio 의 볼륨은 모서리 왼쪽의 모서리 왼쪽의 모서리 왼쪽의 모서리 왼쪽의
이 볼륨은 다른 모든 억제 곡선(수신기 AudioListener 포함)의 볼륨과 곱해 최종 청취 가능성을 얻을 수 있습니다.
테이블이 비어 있거나 nil 는 상수 볼륨 값 1 을 사용하는 각도 변화 곡선을 기본으로 합니다.
매개 변수
반환
SetDistanceAttenuation
Class.Audio 의 볼륨 대 거리 곡선을 설정하여 거리 간의 대기 시간에 따라 AudioEmitter 가 Class.AudioEmitter 를 얼마나 시끄럽게 듣는지 영향을 미칩니다.
곡선은 볼륨 값에 대한 테이블 매핑 거리 키로 표시됩니다. 키는 0보다 큰 값을 가질 수 있지만 값은 0에서 1(포함) 사이의 숫자여야 합니다. 400개의 키 값 쌍을 포함하는 테이블이 지원됩니다.
Class.Audio 의 볼륨은 원거리가 AudioListener 의 볼륨 수준에 직접 위치한 포인트
이 볼륨은 다른 모든 억제 곡선(수신기 AudioListener 포함)의 볼륨과 곱해 최종 청취 가능성을 얻을 수 있습니다.
테이블이 비어 있거나 nil 이면 AudioEmitter는 역 사각 법칙에 따라 주변 거리 부정 곡선을 사용하도록 기본적으로 설정됩니다.
매개 변수
반환
코드 샘플
local Players = game:GetService("Players")
local emitterPart = Instance.new("Part")
emitterPart.Anchored = true
emitterPart.Position = Vector3.new(0, 0, 0)
emitterPart.Parent = workspace
local emitter : AudioEmitter = Instance.new("AudioEmitter")
emitter.Parent = emitterPart
local curve = {}
curve[10] = 1 -- Within a distance of 10 studs, listeners hear this emitter at full volume
curve[100] = 0.4 -- At a distance of 100 studs, listeners hear this emitter at 40% volume
curve[300] = 0 -- At any distance farther than 300 studs, listeners cannot hear this emitter
emitter:SetDistanceAttenuation(curve)
-- Replicate the rolloff curve from the old voice implementation
-- Default voice without the new audio API uses quadratic rolloff ranging from 7 to 80 studs
local MIN_DISTANCE = 7
local MAX_DISTANCE = 80
local CURVE_STEP_SIZE = 2
local voiceCurve = {}
for i = MIN_DISTANCE, MAX_DISTANCE, CURVE_STEP_SIZE do
voiceCurve[i] = ((i - MIN_DISTANCE) - (MAX_DISTANCE - MIN_DISTANCE))^2 / (MAX_DISTANCE - MIN_DISTANCE)^2
end
voiceCurve[MAX_DISTANCE] = 0
local function setVoiceCurve(character)
local voiceEmitter : AudioEmitter = character:WaitForChild("AudioEmitter")
voiceEmitter:SetDistanceAttenuation(voiceCurve)
end
for _, player in Players:GetPlayers() do
if player.Character then
setVoiceCurve(player.Character)
end
player.CharacterAdded:Connect(setVoiceCurve)
end