2026-03-31 아이템 사용 진행중

This commit is contained in:
2026-03-31 01:25:58 +09:00
parent f8773fa168
commit 71dfbf1af2
51 changed files with 5265 additions and 70 deletions

View File

@@ -9,7 +9,8 @@ public enum ItemType
public enum ItemEffectType
{
NONE = 0,
INTERVAL_DAMAGE = 1
RECOVERY_HP = 1,
INTERVAL_DAMAGE = 2
}
[CreateAssetMenu(fileName = "New Item", menuName = "Item")]
@@ -39,6 +40,9 @@ public class Item : ScriptableObject
public Vector3 ColliderCenter = Vector3.zero;
public Vector3 ColliderSize = Vector3.one;
//ItemEffectType.RECOVERY_HP
public float RecoveryHP;
public float RecoveryHPTime;
//ItemEffectType.INTERVAL_DAMAGE 일 경우
public float IntervalDamage;
public float IntervalDamageTime;

View File

@@ -33,7 +33,7 @@ public class InputManager : MonoBehaviour
public event Action OnKeyDown_EnterEvent;
public event Action OnKeyDown_IKeyEvent;
private void Awake()
{
if (Instance == null)

View File

@@ -13,9 +13,19 @@ public void OnSceneLoaded(Scene scene, LoadSceneMode mode)
public void ItemUse(ItemInstance item)
{
if(item.Data.ItemEffectType == ItemEffectType.INTERVAL_DAMAGE)
switch(item.Data.ItemEffectType)
{
IntervalDamageHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
case ItemEffectType.RECOVERY_HP:
{
Debug.Log("HP회복 작동!!");
//RecoveryHPHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
}
break;
case ItemEffectType.INTERVAL_DAMAGE:
{
IntervalDamageHealthEffect(GameManager.Instance.Level.CurrentCharacter.GetComponent<Health>(), item.Data.IntervalDamage, item.Data.IntervalDamageTime, item.Data.ItemEffectVisual);
}
break;
}
}

View File

@@ -3,7 +3,7 @@
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class InventorySlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler
public class InventorySlot : MonoBehaviour, IDropHandler, IPointerEnterHandler, IPointerExitHandler, IPointerMoveHandler, IPointerClickHandler
{
public int SlotIndex; // 슬롯의 고유 번호
private RectTransform _rectTransform; //슬롯박스 사각형
@@ -40,6 +40,71 @@ private void Start()
}
public void ClearSlot()
{
_iconImage.sprite = null;
_iconImage.enabled = false;
_stackText.text = "";
_stackText.enabled = false;
_rarityImage.sprite = _rarity_None_Sprite;
//SlotBg.sprite = RarityImage.sprite;
}
public void UpdateSlotUI()
{
if (currentItem == null)
{
ClearSlot();
return;
}
if (currentItem.Data.Icon != null)
{
_iconImage.sprite = currentItem.Data.Icon;
_iconImage.enabled = true;
}
if (currentItem.Data.IsStackable)
_stackText.text = currentItem.CurrentStack.ToString();
else
_stackText.text = "";
_stackText.enabled = true;
switch (currentItem.Data.Rarity)
{
case 1:
{
_rarityImage.sprite = _rarity_1_Sprite;
}
break;
case 2:
{
_rarityImage.sprite = _rarity_2_Sprite;
}
break;
case 3:
{
_rarityImage.sprite = _rarity_3_Sprite;
}
break;
case 4:
{
_rarityImage.sprite = _rarity_4_Sprite;
}
break;
default:
{
_rarityImage.sprite = _rarity_None_Sprite;
}
break;
}
//SlotBg.sprite = _rarityImage.sprite;
}
// 아이템 데이터 설정 및 UI 갱신
public void SetItem(ItemInstance newItem)
{
@@ -119,74 +184,19 @@ public void OnPointerExit(PointerEventData eventData)
GameManager.Instance.InGameUI.TooltipUI.HideTooltip();
}
public void ClearSlot()
public void OnPointerClick(PointerEventData eventData)
{
_iconImage.sprite = null;
_iconImage.enabled = false;
_stackText.text = "";
_stackText.enabled = false;
_rarityImage.sprite = _rarity_None_Sprite;
//SlotBg.sprite = RarityImage.sprite;
}
public void UpdateSlotUI()
{
if (currentItem == null)
// 우클릭
if (eventData.button == PointerEventData.InputButton.Right)
{
ClearSlot();
return;
ItemUse();
}
if (currentItem.Data.Icon != null)
{
_iconImage.sprite = currentItem.Data.Icon;
_iconImage.enabled = true;
}
if (currentItem.Data.IsStackable)
_stackText.text = currentItem.CurrentStack.ToString();
else
_stackText.text = "";
_stackText.enabled = true;
switch (currentItem.Data.Rarity)
{
case 1:
{
_rarityImage.sprite = _rarity_1_Sprite;
}
break;
case 2:
{
_rarityImage.sprite = _rarity_2_Sprite;
}
break;
case 3:
{
_rarityImage.sprite = _rarity_3_Sprite;
}
break;
case 4:
{
_rarityImage.sprite = _rarity_4_Sprite;
}
break;
default:
{
_rarityImage.sprite = _rarity_None_Sprite;
}
break;
}
//SlotBg.sprite = _rarityImage.sprite;
}
public void ItemUse()
{
GameManager.Instance.ItemEffect.ItemUse(currentItem);
currentItem.CurrentStack -= 1;
UpdateSlotUI();
}
}