diff --git a/Assets/Prefabs/Player/Ambient Sound.prefab b/Assets/Prefabs/Player/Ambient Sound.prefab new file mode 100644 index 0000000..99e0898 --- /dev/null +++ b/Assets/Prefabs/Player/Ambient Sound.prefab @@ -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 diff --git a/Assets/Prefabs/Player/Ambient Sound.prefab.meta b/Assets/Prefabs/Player/Ambient Sound.prefab.meta new file mode 100644 index 0000000..add350c --- /dev/null +++ b/Assets/Prefabs/Player/Ambient Sound.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2b1540a91810a824f95d38d8a1dce667 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Player/Player.prefab b/Assets/Prefabs/Player/Player.prefab index eb6291c..b26c852 100644 --- a/Assets/Prefabs/Player/Player.prefab +++ b/Assets/Prefabs/Player/Player.prefab @@ -851,6 +851,7 @@ GameObject: - component: {fileID: 7093134810128755097} - component: {fileID: 462937706053753531} - component: {fileID: 8702400494665140028} + - component: {fileID: 1070985534702310852} m_Layer: 11 m_Name: Player m_TagString: Player @@ -1042,6 +1043,29 @@ MonoBehaviour: m_EditorClassIdentifier: Loraces: [] 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 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/AmbientSoundGenerator.cs b/Assets/Scripts/AmbientSoundGenerator.cs new file mode 100644 index 0000000..98d31e8 --- /dev/null +++ b/Assets/Scripts/AmbientSoundGenerator.cs @@ -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 SoundTimes = new List(); + + 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(); + if (Sfx != null) { + Sfx.clip = Clips[Random.Range(0, Clips.Length)]; + Sfx.volume = Mathf.Sqrt(Random.Range(0.3f, 1f)); + Sfx.Play(); + } + } + } +} diff --git a/Assets/Scripts/AmbientSoundGenerator.cs.meta b/Assets/Scripts/AmbientSoundGenerator.cs.meta new file mode 100644 index 0000000..657854b --- /dev/null +++ b/Assets/Scripts/AmbientSoundGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 799107a14d3c0d5499f9fa1df5ddd71c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ItemGrabber.cs b/Assets/Scripts/ItemGrabber.cs index 4f3138d..5d27302 100644 --- a/Assets/Scripts/ItemGrabber.cs +++ b/Assets/Scripts/ItemGrabber.cs @@ -112,14 +112,17 @@ public class ItemGrabber : MonoBehaviour { } } - PrimaryIndicator.alpha = Mathf.Lerp(PrimaryIndicator.alpha, Item != null || Campfire != null ? 1 : 0, 10f * Time.deltaTime); - if (Campfire != null && GrabbedItems.Count > 0) { - PrimaryText.text = $"Burn {GrabbedItems[0].Quality.DisplayName}"; + PrimaryIndicator.alpha = Mathf.Lerp(PrimaryIndicator.alpha, + Item != null || Campfire != null || ThrowableItem != null ? 1 : 0, + 10f * Time.deltaTime); + if (Campfire != null && ThrowableItem != null) { + PrimaryText.text = $"Burn {ThrowableItem.Quality.DisplayName}"; } else if (Item != null) { PrimaryText.text = $"Take {Item.Quality.DisplayName}"; } else if (ThrowableItem != null) { PrimaryText.text = $"Throw {ThrowableItem.Quality.DisplayName}"; } + SecondaryIndicator.alpha = Mathf.Lerp(SecondaryIndicator.alpha, CanIgniteTorch ? 1 : 0, 10f * Time.deltaTime); if (CanIgniteTorch) { SecondaryText.text = $"Ignite {TorchableItem.Quality.DisplayName}"; diff --git a/Assets/Scripts/SelfDestructAfterPlaying.cs b/Assets/Scripts/SelfDestructAfterPlaying.cs new file mode 100644 index 0000000..5e7f517 --- /dev/null +++ b/Assets/Scripts/SelfDestructAfterPlaying.cs @@ -0,0 +1,16 @@ +using UnityEngine; + +[RequireComponent(typeof(AudioSource))] +public class SelfDestructAfterPlaying : MonoBehaviour { + private AudioSource Source; + + private void Awake() { + Source = GetComponent(); + } + + private void LateUpdate() { + if (!Source.isPlaying) { + Destroy(gameObject); + } + } +} diff --git a/Assets/Scripts/SelfDestructAfterPlaying.cs.meta b/Assets/Scripts/SelfDestructAfterPlaying.cs.meta new file mode 100644 index 0000000..7411bbc --- /dev/null +++ b/Assets/Scripts/SelfDestructAfterPlaying.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60f36e8849a468f45beadd2d5d390309 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/Ambient.meta b/Assets/Sounds/Ambient.meta new file mode 100644 index 0000000..c1ce538 --- /dev/null +++ b/Assets/Sounds/Ambient.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5e8f766bf7981754c85f5a1afb7365bb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sounds/Ambient/Owl01.ogg b/Assets/Sounds/Ambient/Owl01.ogg new file mode 100644 index 0000000..729a658 Binary files /dev/null and b/Assets/Sounds/Ambient/Owl01.ogg differ diff --git a/Assets/Sounds/Ambient/Owl01.ogg.meta b/Assets/Sounds/Ambient/Owl01.ogg.meta new file mode 100644 index 0000000..d8230f9 --- /dev/null +++ b/Assets/Sounds/Ambient/Owl01.ogg.meta @@ -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: