Add stereo panning for player audio channels and expose StopVoice method
This commit is contained in:
parent
e3e091c8b6
commit
d81fe842e0
@ -127,11 +127,20 @@ public void PlayVoice(int playerId, AudioClip clip)
|
||||
{
|
||||
if (clip == null) return;
|
||||
AudioSource source = GetVoiceSource(playerId);
|
||||
|
||||
|
||||
// Прерываем предыдущую фразу, если нужно (для голоса это обычно желательно)
|
||||
source.Stop();
|
||||
ApplyPlayerPan(source, playerId);
|
||||
source.PlayOneShot(clip);
|
||||
}
|
||||
|
||||
// Устанавливает 2D режим и панораму для маршрутизации в VoiceMeeter (player1 -> left, player2 -> right)
|
||||
private void ApplyPlayerPan(AudioSource src, int playerId)
|
||||
{
|
||||
if (src == null) return;
|
||||
src.spatialBlend = 0f; // 2D
|
||||
src.panStereo = (playerId == 1) ? -1f : 1f;
|
||||
}
|
||||
|
||||
|
||||
private AudioSource GetVoiceSource(int playerId)
|
||||
@ -157,15 +166,23 @@ private void StopAllPlayerSounds(int playerId)
|
||||
GetVoiceSource(playerId).Stop();
|
||||
GetEffectsSource(playerId).Stop();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Публичный метод чтобы прекратить только голосовой канал указанного игрока
|
||||
public void StopVoice(int playerId)
|
||||
{
|
||||
var src = GetVoiceSource(playerId);
|
||||
if (src != null)
|
||||
src.Stop();
|
||||
}
|
||||
|
||||
public void PlayShoot(int playerId)
|
||||
{
|
||||
if (shootSounds.Length != 0)
|
||||
{
|
||||
AudioClip clip = shootSounds[UnityEngine.Random.Range(0, shootSounds.Length)];
|
||||
GetEffectsSource(playerId).PlayOneShot(clip);
|
||||
AudioSource src = GetEffectsSource(playerId);
|
||||
ApplyPlayerPan(src, playerId);
|
||||
GetEffectsSource(playerId).PlayOneShot(clip, 0.8f);
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,7 +191,9 @@ public void PlayExplosion(int playerId)
|
||||
if (explosionSounds.Length != 0)
|
||||
{
|
||||
AudioClip clip = explosionSounds[UnityEngine.Random.Range(0, explosionSounds.Length)];
|
||||
GetEffectsSource(playerId).PlayOneShot(clip);
|
||||
AudioSource src = GetEffectsSource(playerId);
|
||||
ApplyPlayerPan(src, playerId);
|
||||
GetEffectsSource(playerId).PlayOneShot(clip, 3.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@ -183,7 +202,9 @@ public void PlayMiss(int playerId)
|
||||
if (missSounds.Length != 0)
|
||||
{
|
||||
AudioClip clip = missSounds[UnityEngine.Random.Range(0, missSounds.Length)];
|
||||
GetEffectsSource(playerId).PlayOneShot(clip);
|
||||
AudioSource src = GetEffectsSource(playerId);
|
||||
ApplyPlayerPan(src, playerId);
|
||||
GetEffectsSource(playerId).PlayOneShot(clip, 0.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user