Add ambient sound system
This commit is contained in:
parent
adf6e245c2
commit
a96bff5967
143
Assets/Prefabs/Player/Ambient Sound.prefab
Normal file
143
Assets/Prefabs/Player/Ambient Sound.prefab
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &5362017482645399226
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6620256556670932985}
|
||||||
|
- component: {fileID: 8570857400429686574}
|
||||||
|
- component: {fileID: 4367637972437939355}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Ambient Sound
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6620256556670932985
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5362017482645399226}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &8570857400429686574
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5362017482645399226}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 60f36e8849a468f45beadd2d5d390309, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!82 &4367637972437939355
|
||||||
|
AudioSource:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5362017482645399226}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 4
|
||||||
|
OutputAudioMixerGroup: {fileID: -8678847571685279384, guid: 032de345950918c4e89684078c6a7213,
|
||||||
|
type: 2}
|
||||||
|
m_audioClip: {fileID: 0}
|
||||||
|
m_PlayOnAwake: 0
|
||||||
|
m_Volume: 1
|
||||||
|
m_Pitch: 1
|
||||||
|
Loop: 0
|
||||||
|
Mute: 0
|
||||||
|
Spatialize: 0
|
||||||
|
SpatializePostEffects: 0
|
||||||
|
Priority: 128
|
||||||
|
DopplerLevel: 1
|
||||||
|
MinDistance: 1
|
||||||
|
MaxDistance: 500
|
||||||
|
Pan2D: 0
|
||||||
|
rolloffMode: 0
|
||||||
|
BypassEffects: 0
|
||||||
|
BypassListenerEffects: 0
|
||||||
|
BypassReverbZones: 0
|
||||||
|
rolloffCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 1
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
panLevelCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
spreadCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 0
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
||||||
|
reverbZoneMixCustomCurve:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Curve:
|
||||||
|
- serializedVersion: 3
|
||||||
|
time: 0
|
||||||
|
value: 1
|
||||||
|
inSlope: 0
|
||||||
|
outSlope: 0
|
||||||
|
tangentMode: 0
|
||||||
|
weightedMode: 0
|
||||||
|
inWeight: 0.33333334
|
||||||
|
outWeight: 0.33333334
|
||||||
|
m_PreInfinity: 2
|
||||||
|
m_PostInfinity: 2
|
||||||
|
m_RotationOrder: 4
|
7
Assets/Prefabs/Player/Ambient Sound.prefab.meta
Normal file
7
Assets/Prefabs/Player/Ambient Sound.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2b1540a91810a824f95d38d8a1dce667
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -851,6 +851,7 @@ GameObject:
|
|||||||
- component: {fileID: 7093134810128755097}
|
- component: {fileID: 7093134810128755097}
|
||||||
- component: {fileID: 462937706053753531}
|
- component: {fileID: 462937706053753531}
|
||||||
- component: {fileID: 8702400494665140028}
|
- component: {fileID: 8702400494665140028}
|
||||||
|
- component: {fileID: 1070985534702310852}
|
||||||
m_Layer: 11
|
m_Layer: 11
|
||||||
m_Name: Player
|
m_Name: Player
|
||||||
m_TagString: Player
|
m_TagString: Player
|
||||||
@ -1042,6 +1043,29 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
Loraces: []
|
Loraces: []
|
||||||
ChunkKeepAliveTransformsParent: {fileID: 3141763353809520921}
|
ChunkKeepAliveTransformsParent: {fileID: 3141763353809520921}
|
||||||
|
--- !u!114 &1070985534702310852
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6125707630481988399}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 799107a14d3c0d5499f9fa1df5ddd71c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
AmbientSfxPrefab: {fileID: 5362017482645399226, guid: 2b1540a91810a824f95d38d8a1dce667,
|
||||||
|
type: 3}
|
||||||
|
MinDistance: 4
|
||||||
|
MaxDistance: 15
|
||||||
|
Clips:
|
||||||
|
- {fileID: 8300000, guid: abcd384e5671295429f1f9e38f53c67d, type: 3}
|
||||||
|
MinCooldown: 1
|
||||||
|
MaxCooldown: 8
|
||||||
|
TooManySoundsCount: 4
|
||||||
|
TrackingDuration: 14
|
||||||
|
AmbientNoiseCooldown: 0
|
||||||
--- !u!1 &6215241420411417389
|
--- !u!1 &6215241420411417389
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
56
Assets/Scripts/AmbientSoundGenerator.cs
Normal file
56
Assets/Scripts/AmbientSoundGenerator.cs
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class AmbientSoundGenerator : MonoBehaviour {
|
||||||
|
public GameObject AmbientSfxPrefab;
|
||||||
|
public float MinDistance;
|
||||||
|
public float MaxDistance;
|
||||||
|
public AudioClip[] Clips;
|
||||||
|
|
||||||
|
[Header("Cooldown configuration")]
|
||||||
|
public float MinCooldown;
|
||||||
|
public float MaxCooldown;
|
||||||
|
public int TooManySoundsCount;
|
||||||
|
[Tooltip("")]
|
||||||
|
public float TrackingDuration;
|
||||||
|
|
||||||
|
[Header("Runtime values")]
|
||||||
|
public float AmbientNoiseCooldown = 0f;
|
||||||
|
|
||||||
|
private Transform World;
|
||||||
|
private List<float> SoundTimes = new List<float>();
|
||||||
|
|
||||||
|
private void Awake() {
|
||||||
|
World = GameObject.FindGameObjectWithTag("World").transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update() {
|
||||||
|
AmbientNoiseCooldown -= Time.deltaTime;
|
||||||
|
if (AmbientNoiseCooldown <= 0) {
|
||||||
|
AmbientNoiseCooldown += Random.Range(MinCooldown, MaxCooldown) + TrackingDuration * Mathf.Pow(SoundTimes.Count / TooManySoundsCount, 2);
|
||||||
|
|
||||||
|
int RemoveUntil = -1;
|
||||||
|
for (int I = 0; I < SoundTimes.Count; I++) {
|
||||||
|
if (Time.time - SoundTimes[I] > TrackingDuration) {
|
||||||
|
RemoveUntil = I;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SoundTimes.RemoveRange(0, RemoveUntil + 1);
|
||||||
|
SoundTimes.Add(Time.time);
|
||||||
|
|
||||||
|
float Distance = Random.Range(MinDistance, MaxDistance);
|
||||||
|
float Rads = Random.Range(0, 2 * Mathf.PI);
|
||||||
|
Vector3 Offset = new Vector3(Mathf.Cos(Rads) * Distance, Random.Range(0f, 5f), Mathf.Sin(Rads) * Distance);
|
||||||
|
GameObject Obj = Instantiate(AmbientSfxPrefab, transform.position + Offset, new Quaternion(), World);
|
||||||
|
AudioSource Sfx = Obj.GetComponent<AudioSource>();
|
||||||
|
if (Sfx != null) {
|
||||||
|
Sfx.clip = Clips[Random.Range(0, Clips.Length)];
|
||||||
|
Sfx.volume = Mathf.Sqrt(Random.Range(0.3f, 1f));
|
||||||
|
Sfx.Play();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/AmbientSoundGenerator.cs.meta
Normal file
11
Assets/Scripts/AmbientSoundGenerator.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 799107a14d3c0d5499f9fa1df5ddd71c
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -112,14 +112,17 @@ public class ItemGrabber : MonoBehaviour {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PrimaryIndicator.alpha = Mathf.Lerp(PrimaryIndicator.alpha, Item != null || Campfire != null ? 1 : 0, 10f * Time.deltaTime);
|
PrimaryIndicator.alpha = Mathf.Lerp(PrimaryIndicator.alpha,
|
||||||
if (Campfire != null && GrabbedItems.Count > 0) {
|
Item != null || Campfire != null || ThrowableItem != null ? 1 : 0,
|
||||||
PrimaryText.text = $"Burn {GrabbedItems[0].Quality.DisplayName}";
|
10f * Time.deltaTime);
|
||||||
|
if (Campfire != null && ThrowableItem != null) {
|
||||||
|
PrimaryText.text = $"Burn {ThrowableItem.Quality.DisplayName}";
|
||||||
} else if (Item != null) {
|
} else if (Item != null) {
|
||||||
PrimaryText.text = $"Take {Item.Quality.DisplayName}";
|
PrimaryText.text = $"Take {Item.Quality.DisplayName}";
|
||||||
} else if (ThrowableItem != null) {
|
} else if (ThrowableItem != null) {
|
||||||
PrimaryText.text = $"Throw {ThrowableItem.Quality.DisplayName}";
|
PrimaryText.text = $"Throw {ThrowableItem.Quality.DisplayName}";
|
||||||
}
|
}
|
||||||
|
|
||||||
SecondaryIndicator.alpha = Mathf.Lerp(SecondaryIndicator.alpha, CanIgniteTorch ? 1 : 0, 10f * Time.deltaTime);
|
SecondaryIndicator.alpha = Mathf.Lerp(SecondaryIndicator.alpha, CanIgniteTorch ? 1 : 0, 10f * Time.deltaTime);
|
||||||
if (CanIgniteTorch) {
|
if (CanIgniteTorch) {
|
||||||
SecondaryText.text = $"Ignite {TorchableItem.Quality.DisplayName}";
|
SecondaryText.text = $"Ignite {TorchableItem.Quality.DisplayName}";
|
||||||
|
16
Assets/Scripts/SelfDestructAfterPlaying.cs
Normal file
16
Assets/Scripts/SelfDestructAfterPlaying.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[RequireComponent(typeof(AudioSource))]
|
||||||
|
public class SelfDestructAfterPlaying : MonoBehaviour {
|
||||||
|
private AudioSource Source;
|
||||||
|
|
||||||
|
private void Awake() {
|
||||||
|
Source = GetComponent<AudioSource>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LateUpdate() {
|
||||||
|
if (!Source.isPlaying) {
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Assets/Scripts/SelfDestructAfterPlaying.cs.meta
Normal file
11
Assets/Scripts/SelfDestructAfterPlaying.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 60f36e8849a468f45beadd2d5d390309
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Assets/Sounds/Ambient.meta
Normal file
8
Assets/Sounds/Ambient.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5e8f766bf7981754c85f5a1afb7365bb
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
BIN
Assets/Sounds/Ambient/Owl01.ogg
Normal file
BIN
Assets/Sounds/Ambient/Owl01.ogg
Normal file
Binary file not shown.
22
Assets/Sounds/Ambient/Owl01.ogg.meta
Normal file
22
Assets/Sounds/Ambient/Owl01.ogg.meta
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: abcd384e5671295429f1f9e38f53c67d
|
||||||
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 6
|
||||||
|
defaultSettings:
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 44100
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
preloadAudioData: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Reference in New Issue
Block a user