From 1ab426ba3499423a4abd28df34877df9ea435b89 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Wed, 16 Aug 2023 01:07:38 -0400 Subject: [PATCH] add sound while hovering over logo --- .../Prefabs/Common/MainMenu/Logo.prefab | 27 +++++++++++++++++++ Assets/Scenes/Title.unity | 11 ++++++++ Assets/Scripts/TitleManager.cs | 14 +++++++++- Assets/Scripts/Util/Sound.cs | 10 ++++--- Assets/Scripts/Util/SoundByte.cs | 3 ++- 5 files changed, 60 insertions(+), 5 deletions(-) diff --git a/Assets/Resources/Prefabs/Common/MainMenu/Logo.prefab b/Assets/Resources/Prefabs/Common/MainMenu/Logo.prefab index 115f27a0c..0c2b72a44 100644 --- a/Assets/Resources/Prefabs/Common/MainMenu/Logo.prefab +++ b/Assets/Resources/Prefabs/Common/MainMenu/Logo.prefab @@ -1020,6 +1020,7 @@ GameObject: m_Component: - component: {fileID: 1612412234317559814} - component: {fileID: 1934842100097612374} + - component: {fileID: 6291913669464459655} m_Layer: 0 m_Name: Logo m_TagString: Untagged @@ -1054,6 +1055,32 @@ SortingGroup: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 1 +--- !u!61 &6291913669464459655 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3100003515355048895} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: -3.32, y: 1.19} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 13.75, y: 10} + m_EdgeRadius: 0 --- !u!1 &3289918358035214086 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Title.unity b/Assets/Scenes/Title.unity index 99bbd2d9c..2da12a996 100644 --- a/Assets/Scenes/Title.unity +++ b/Assets/Scenes/Title.unity @@ -1955,6 +1955,10 @@ PrefabInstance: propertyPath: m_AnchoredPosition.y value: 27.1 objectReference: {fileID: 0} + - target: {fileID: 6291913669464459655, guid: 0254202fd7d5ca84c8cf0950a645230b, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} - target: {fileID: 6344996612592602760, guid: 0254202fd7d5ca84c8cf0950a645230b, type: 3} propertyPath: m_AnchoredPosition.x value: -28.5 @@ -2709,6 +2713,11 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1178120458} m_CullTransparentMesh: 1 +--- !u!61 &1269393217 stripped +BoxCollider2D: + m_CorrespondingSourceObject: {fileID: 6291913669464459655, guid: 0254202fd7d5ca84c8cf0950a645230b, type: 3} + m_PrefabInstance: {fileID: 869323822} + m_PrefabAsset: {fileID: 0} --- !u!1 &1336149017 GameObject: m_ObjectHideFlags: 0 @@ -3829,9 +3838,11 @@ MonoBehaviour: - {fileID: 1400026815} pressAnyKeyAnim: {fileID: 976586349} bpm: 114 + offset: 0.082 bg: {fileID: 1178120460} bgXSpeed: -0.08 bgYSpeed: 0.08 + logoHoverCollider: {fileID: 1269393217} --- !u!82 &1811344143 AudioSource: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/TitleManager.cs b/Assets/Scripts/TitleManager.cs index 22d1a40b8..dbfac9d7a 100644 --- a/Assets/Scripts/TitleManager.cs +++ b/Assets/Scripts/TitleManager.cs @@ -19,12 +19,15 @@ namespace HeavenStudio [SerializeField] private Animator pressAnyKeyAnim; [SerializeField] private float bpm = 114f; + [SerializeField] private float offset = 0f; [SerializeField] private RawImage bg; [SerializeField] private float bgXSpeed; [SerializeField] private float bgYSpeed; + [SerializeField] private Collider2D logoHoverCollider; + private AudioSource musicSource; private double songPosBeat; @@ -68,7 +71,7 @@ namespace HeavenStudio time += dt; - songPos = time; + songPos = time + offset; songPosBeat = SecsToBeats(songPos); if (logoRevealed && !menuMode && Input.anyKeyDown) @@ -118,6 +121,10 @@ namespace HeavenStudio altBop = !altBop; } targetBopBeat += 1; + if (logoRevealed && logoHoverCollider.OverlapPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition))) + { + SoundByte.PlayOneShotScheduled("count-ins/cowbell", AudioSettings.dspTime + BeatsToSecs(targetBopBeat - songPosBeat, bpm)); + } } } @@ -126,6 +133,11 @@ namespace HeavenStudio return s / 60f * bpm; } + public double BeatsToSecs(double beats, float bpm) + { + return beats / bpm * 60f; + } + public float GetPositionFromBeat(float startBeat, float length) { float a = Mathp.Normalize((float)songPosBeat, startBeat, startBeat + length); diff --git a/Assets/Scripts/Util/Sound.cs b/Assets/Scripts/Util/Sound.cs index 13bd88f77..5bbc4b3b6 100644 --- a/Assets/Scripts/Util/Sound.cs +++ b/Assets/Scripts/Util/Sound.cs @@ -56,8 +56,11 @@ namespace HeavenStudio.Util else { playInstant = false; - scheduledPitch = cnd.SongPitch; - startTime = (AudioSettings.dspTime + (cnd.GetSongPosFromBeat(beat) - cnd.songPositionAsDouble)/(double)scheduledPitch) - offset; + if (cnd != null) + { + scheduledPitch = cnd?.SongPitch ?? 1f; + startTime = (AudioSettings.dspTime + (cnd.GetSongPosFromBeat(beat) - cnd.songPositionAsDouble)/(double)scheduledPitch) - offset; + } if (scheduledPitch != 0 && AudioSettings.dspTime >= startTime) { @@ -173,7 +176,8 @@ namespace HeavenStudio.Util public void Delete() { - GameManager.instance.SoundObjects.Remove(gameObject); + if (GameManager.instance != null) + GameManager.instance.SoundObjects.Remove(gameObject); Destroy(gameObject); } diff --git a/Assets/Scripts/Util/SoundByte.cs b/Assets/Scripts/Util/SoundByte.cs index f15c97f81..ef9281aa6 100644 --- a/Assets/Scripts/Util/SoundByte.cs +++ b/Assets/Scripts/Util/SoundByte.cs @@ -236,7 +236,8 @@ namespace HeavenStudio.Util snd.scheduled = true; snd.scheduledTime = targetTime; - GameManager.instance.SoundObjects.Add(oneShot); + if (GameManager.instance != null) + GameManager.instance.SoundObjects.Add(oneShot); return snd; }