diff --git a/Assets/01_Scenes/MemoryPieceScene.unity b/Assets/01_Scenes/MemoryPieceScene.unity index 2582066a..7360bcb6 100644 --- a/Assets/01_Scenes/MemoryPieceScene.unity +++ b/Assets/01_Scenes/MemoryPieceScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:022894a0bac7d4fbac55180cebc412e57915cb8d2c12d7d6bf299b048dffdccb -size 183945 +oid sha256:e8c97bc576519cf7abab91fed23703b75a75adcef0892ebbd0d64e039b3bfd76 +size 100420 diff --git a/Assets/02_Scripts/Managers/CollectionManager.cs b/Assets/02_Scripts/Managers/CollectionManager.cs new file mode 100644 index 00000000..dc587dd7 --- /dev/null +++ b/Assets/02_Scripts/Managers/CollectionManager.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +public class CollectionManager : MonoBehaviour +{ + public static CollectionManager Instance; + + [Header("Star Data")] + private int _currentStars = 0; + + [Header("CollectionHuds")] + [SerializeField] private StarPieceHud _starPieceHud; + + public int GetStarCount => _currentStars; + void Awake() + { + if (Instance != null && Instance != this) + { + Destroy(gameObject); + return; + } + + Instance = this; + DontDestroyOnLoad(gameObject); + } + + void Start() + { + UpdateUI(); + } + + public void AddStar(int amount) + { + _currentStars += amount; + UpdateUI(); + + Debug.Log("Star Added: " + amount + " / Total Star: " + _currentStars); + } + + void UpdateUI() + { + if(_starPieceHud != null) + { + _starPieceHud.RefreshUI(); + } + } +} diff --git a/Assets/02_Scripts/Managers/CollectionManager.cs.meta b/Assets/02_Scripts/Managers/CollectionManager.cs.meta new file mode 100644 index 00000000..9e15bd6b --- /dev/null +++ b/Assets/02_Scripts/Managers/CollectionManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 5246c040c89587145b3d5b6f6631a948 \ No newline at end of file diff --git a/Assets/02_Scripts/Managers/StarPickup.cs b/Assets/02_Scripts/Managers/StarPickup.cs new file mode 100644 index 00000000..a61d271c --- /dev/null +++ b/Assets/02_Scripts/Managers/StarPickup.cs @@ -0,0 +1,81 @@ +using UnityEngine; + +public class StarPickup : MonoBehaviour +{ + [SerializeField] private string _playerTag; + + [Header("Visual Spin")] + public Transform visualRoot; + public bool rotate = true; + public float rotateSpeed = 180f; + + [Tooltip("회전축")] + public Vector3 rotateAxis = Vector3.up; + + [Header("Float Motion")] + public bool floatMotion = true; + public float floatHeight = 0.08f; + public float floatSpeed = 2f; + + [Header("Sound")] + public AudioClip pickupSound; + + private Vector3 startPosition; + + void Awake() + { + if (visualRoot == null) + { + visualRoot = transform; + } + } + + void Start() + { + startPosition = transform.position; + } + + void Update() + { + if (rotate && visualRoot != null) + { + visualRoot.Rotate(rotateAxis.normalized, rotateSpeed * Time.deltaTime, Space.Self); + } + + if (floatMotion) + { + float yOffset = Mathf.Sin(Time.time * floatSpeed) * floatHeight; + transform.position = startPosition + new Vector3(0f, yOffset, 0f); + } + } + + public void CollectStar() + { + + Debug.Log("CollectStar called."); + + if (CollectionManager.Instance != null) + { + CollectionManager.Instance.AddStar(1); + } + else + { + Debug.LogWarning("CollectionManager not found."); + } + + if (pickupSound != null && pickupSound != null) + { + SoundManager.Instance.PlaySFX(pickupSound); + } + + Destroy(gameObject); + } + + public void OnTriggerEnter(Collider other) + { + if(other.CompareTag(_playerTag)) + { + CollectStar(); + } + } +} diff --git a/Assets/02_Scripts/Managers/StarPickup.cs.meta b/Assets/02_Scripts/Managers/StarPickup.cs.meta new file mode 100644 index 00000000..34fbb3a6 --- /dev/null +++ b/Assets/02_Scripts/Managers/StarPickup.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 400203bf2ecfc114f91e0dc63fe1e219 \ No newline at end of file diff --git a/Assets/02_Scripts/UI/StarPieceHud.cs b/Assets/02_Scripts/UI/StarPieceHud.cs new file mode 100644 index 00000000..366defa1 --- /dev/null +++ b/Assets/02_Scripts/UI/StarPieceHud.cs @@ -0,0 +1,31 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +public class StarPieceHud : MonoBehaviour +{ + [SerializeField] private Image[] _imageArray; + [SerializeField] private TMP_Text _countText; + + [SerializeField] private GameObject _StarPieceUIRoot; + + public int GetStarCount => CollectionManager.Instance.GetStarCount; + + public void RefreshUI() + { + _countText.text = $"{GetStarCount} / {_imageArray.Length}"; + + for(int i = 0; i<_imageArray.Length; i++) + { + if(i < GetStarCount) + { + _imageArray[i].gameObject.SetActive(true); + } + } + } + + public void StarPieceHudToggle() + { + _StarPieceUIRoot.SetActive(!_StarPieceUIRoot.activeSelf); + } +} diff --git a/Assets/02_Scripts/UI/StarPieceHud.cs.meta b/Assets/02_Scripts/UI/StarPieceHud.cs.meta new file mode 100644 index 00000000..60bffbd6 --- /dev/null +++ b/Assets/02_Scripts/UI/StarPieceHud.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1b4836d7a85fcc848b5a25b8a2e51a36 \ No newline at end of file diff --git a/Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab b/Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab deleted file mode 100644 index b0bfd1c7..00000000 --- a/Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:96cfa22174695d8c7ee0cfc7d529f7a875e8abaa616f00b9e711f7ee307dbaa2 -size 5647 diff --git a/Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab b/Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab new file mode 100644 index 00000000..ca51de88 --- /dev/null +++ b/Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6f66e8d81352c902f1f360bd9ea5c2f3e3ba5a6f55a4c55a6dbe67add5a233 +size 5930 diff --git a/Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab.meta b/Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab.meta similarity index 74% rename from Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab.meta rename to Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab.meta index 552d155d..af6d73ea 100644 --- a/Assets/04_Models/Objects/Star/Prefabs/StarPiece.prefab.meta +++ b/Assets/04_Models/Objects/Star/Prefabs/star_piece.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a0d191b2a9fd35a4c853beafc12ccd57 +guid: b1c15982e88ac314080aa85e24337300 PrefabImporter: externalObjects: {} userData: diff --git a/Assets/05_Textures/UI/StarPieceIUIBase.png b/Assets/05_Textures/UI/StarPieceIUIBase.png new file mode 100644 index 00000000..57d86d0b --- /dev/null +++ b/Assets/05_Textures/UI/StarPieceIUIBase.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33f17d00af494028556470fb78d7e147cda777c0f2d1c737f9e9c9458a27a737 +size 1833 diff --git a/Assets/05_Textures/UI/StarPieceIUIBase.png.meta b/Assets/05_Textures/UI/StarPieceIUIBase.png.meta new file mode 100644 index 00000000..5d8714d6 --- /dev/null +++ b/Assets/05_Textures/UI/StarPieceIUIBase.png.meta @@ -0,0 +1,156 @@ +fileFormatVersion: 2 +guid: 32208240115105347883a410f0986dee +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WindowsStoreApps + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/11_Audio/Source/VFX.meta b/Assets/11_Audio/Source/SFX.meta similarity index 100% rename from Assets/11_Audio/Source/VFX.meta rename to Assets/11_Audio/Source/SFX.meta diff --git a/Assets/11_Audio/Source/VFX/Blip.wav b/Assets/11_Audio/Source/SFX/Blip.wav similarity index 100% rename from Assets/11_Audio/Source/VFX/Blip.wav rename to Assets/11_Audio/Source/SFX/Blip.wav diff --git a/Assets/11_Audio/Source/VFX/Blip.wav.meta b/Assets/11_Audio/Source/SFX/Blip.wav.meta similarity index 100% rename from Assets/11_Audio/Source/VFX/Blip.wav.meta rename to Assets/11_Audio/Source/SFX/Blip.wav.meta diff --git a/Assets/11_Audio/Source/SFX/PickupStar.wav b/Assets/11_Audio/Source/SFX/PickupStar.wav new file mode 100644 index 00000000..21f07d50 --- /dev/null +++ b/Assets/11_Audio/Source/SFX/PickupStar.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6b08ee1cca26feba7d2db7c10752df21da127771e07804a127cb819b0aa34e0 +size 27726 diff --git a/Assets/11_Audio/Source/SFX/PickupStar.wav.meta b/Assets/11_Audio/Source/SFX/PickupStar.wav.meta new file mode 100644 index 00000000..87af829e --- /dev/null +++ b/Assets/11_Audio/Source/SFX/PickupStar.wav.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 0716d271725fed94aad4c2028810ab5f +AudioImporter: + externalObjects: {} + serializedVersion: 8 + defaultSettings: + serializedVersion: 2 + loadType: 0 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + preloadAudioData: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/11_Audio/Source/VFX/StartBlip.wav b/Assets/11_Audio/Source/SFX/StartBlip.wav similarity index 100% rename from Assets/11_Audio/Source/VFX/StartBlip.wav rename to Assets/11_Audio/Source/SFX/StartBlip.wav diff --git a/Assets/11_Audio/Source/VFX/StartBlip.wav.meta b/Assets/11_Audio/Source/SFX/StartBlip.wav.meta similarity index 100% rename from Assets/11_Audio/Source/VFX/StartBlip.wav.meta rename to Assets/11_Audio/Source/SFX/StartBlip.wav.meta