별조각픽업

This commit is contained in:
2026-06-24 20:36:39 +09:00
parent b92bb65ba6
commit 5ff460f9c3
19 changed files with 355 additions and 6 deletions

Binary file not shown.

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5246c040c89587145b3d5b6f6631a948

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 400203bf2ecfc114f91e0dc63fe1e219

View File

@@ -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);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1b4836d7a85fcc848b5a25b8a2e51a36

Binary file not shown.

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: a0d191b2a9fd35a4c853beafc12ccd57
guid: b1c15982e88ac314080aa85e24337300
PrefabImporter:
externalObjects: {}
userData:

Binary file not shown.

View File

@@ -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:

Binary file not shown.

View File

@@ -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: