using UnityEngine; // 튜토리얼 중 플레이어가 직접 먹어 효과를 확인하는 필드 아이템 public class ItemPickup : MonoBehaviour { public GameManager.TutorialItemType itemType = GameManager.TutorialItemType.HealthSushi; private static Sprite fallbackSprite; private bool collected = false; private SpriteRenderer spriteRenderer; private Collider2D pickupCollider; private void Awake() { spriteRenderer = GetComponent(); pickupCollider = GetComponent(); } public void Setup(Sprite sprite, GameManager.TutorialItemType nextItemType) { itemType = nextItemType; if(spriteRenderer != null) { spriteRenderer.sprite = sprite != null ? sprite : GetFallbackSprite(); spriteRenderer.color = sprite != null ? Color.white : GetFallbackColor(nextItemType); } } public void ResetPickup() { collected = false; gameObject.SetActive(true); if(pickupCollider != null) { pickupCollider.enabled = true; } } private void OnTriggerEnter2D(Collider2D other) { if(collected || !other.CompareTag("Player") || !GameFlowManager.IsGameplayActive) { return; } collected = true; ItemFeedbackEffect.Spawn(transform.position, spriteRenderer != null ? spriteRenderer.sprite : null, itemType, false); if(GameManager.instance != null) { GameManager.instance.ApplyTutorialItem(itemType); } gameObject.SetActive(false); } private Color GetFallbackColor(GameManager.TutorialItemType fallbackItemType) { switch(fallbackItemType) { case GameManager.TutorialItemType.InvincibleRamen: return new Color(1f, 0.58f, 0.12f, 1f); case GameManager.TutorialItemType.EnergyDrink: return new Color(0.35f, 1f, 0.5f, 1f); case GameManager.TutorialItemType.MileageCard: return new Color(1f, 0.92f, 0.26f, 1f); case GameManager.TutorialItemType.HealthSushi: default: return new Color(1f, 0.34f, 0.42f, 1f); } } private Sprite GetFallbackSprite() { if(fallbackSprite != null) { return fallbackSprite; } Texture2D texture = new Texture2D(16, 16); Color[] pixels = new Color[16 * 16]; for(int i = 0; i < pixels.Length; i++) { pixels[i] = Color.white; } texture.SetPixels(pixels); texture.Apply(); fallbackSprite = Sprite.Create(texture, new Rect(0f, 0f, 16f, 16f), new Vector2(0.5f, 0.5f), 16f); return fallbackSprite; } }