인벤토리 기능
1. 아이템 드롭 기능
ItemManager.cs - 아이템 드롭 로직
public void DropItem(Vector3 dropPos)
{
var randomIndex = Random.Range(0, items.Length);
GameObject item = Instantiate(items[randomIndex], dropPos, Quaternion.identity);
Rigidbody2D itemRb = item.GetComponent<Rigidbody2D>();
itemRb.AddForceX(Random.Range(-2f, 2f), ForceMode2D.Impulse);
itemRb.AddForceY(3f, ForceMode2D.Impulse);
float ranPower = Random.Range(-1.5f, 1.5f);
itemRb.AddTorque(ranPower, ForceMode2D.Impulse);
}
- 랜덤 아이템 생성
- X, Y 방향으로 힘을 가해 흩뿌려짐
- 회전 토크 추가
MonsterCore.cs - 몬스터 사망 시 드롭
public void Death()
{
isDead = true;
animator.SetTrigger("Death");
monsterColl.enabled = false;
monsterRb.gravityScale = 0f;
int itemCount = Random.Range(0, 3);
if (itemCount > 0)
{
for (int i = 0; i < itemCount; i++)
{
itemManager.DropItem(transform.position);
}
}
}
- 사망 처리 후 아이템을 최대 2개까지 랜덤 드롭
- 중복 처리 방지 및 안전한 예외처리 포함
2. 인벤토리 UI 구성
ItemManager.cs - 슬롯 초기화 및 버튼 설정
void Start()
{
slots = slotGroup.GetComponentsInChildren<Slot>(true);
inventoryButton.onClick.AddListener(OnInventory);
}
- 인벤토리 시작 시 빈 슬롯 구성
- 버튼 클릭 시 인벤토리 활성/비활성 전환
Slot.cs - 아이템 추가 및 사용 처리
public void AddItem(IItemObject newItem)
{
item = newItem;
isEmpty = false;
itemImage.sprite = newItem.Icon;
itemImage.SetNativeSize();
slotButton.interactable = true;
itemImage.gameObject.SetActive(true);
}
- 아이템을 슬롯에 표시
- 버튼 클릭 시 Use() 호출
public void UseItem()
{
if (item != null)
{
item.Use();
ClearSlot();
}
}
- 아이템 사용 후 슬롯 초기화
3. 아이템 획득 구조
IItemObject 인터페이스
public interface IItemObject
{
ItemManager Inventory { get; set; }
GameObject Obj { get; set; }
string ItemName { get; set; }
Sprite Icon { get; set; }
void Get();
void Use();
}
- 인벤토리 시스템에 통합될 공통 인터페이스 정의
HpPotion.cs - 획득 구현
void OnCollisionEnter2D(Collision2D other)
{
if (other.gameObject.CompareTag("Player"))
{
Get();
}
}
public void Get()
{
gameObject.SetActive(false);
Inventory.GetItem(this);
}
- 충돌 시 아이템 비활성화 및 인벤토리에 추가
4. 인벤토리 동작 요약
- 아이템 드롭 시 ItemManager.DropItem()
- 플레이어가 아이템과 충돌하면 IItemObject.Get() 호출
- ItemManager.GetItem()이 빈 슬롯을 찾아 Slot.AddItem() 실행
- 슬롯 버튼을 눌러 Use() → 효과 실행 및 슬롯 초기화
2D Rigging
1. 2D 리깅 실습 요약
과정 요약
- Sprite Editor에서 Sprite Sheet 설정
- Auto Geometry > Generate
- 필요 시 Create Vertex로 정점 추가
- Auto Weights로 본(Bone) 자동 연결
- IK Manager 2D 추가로 IK 설정 (손/발)
유의사항
- Auto Weights 후 이상한 Weight 분포는 Brush로 수정
- 본 구조가 적용된 모델은 Apply 후 씬에 배치
- IK 설정은 각 Limb마다 Target 설정 필요
'멋쟁이사자처럼 > 부트캠프' 카테고리의 다른 글
[멋쟁이사자차럼 부트캠프] 유니티 게임 개발 5기 - 35일차 : 자료구조 (3) | 2025.07.08 |
---|---|
[멋쟁이사자차럼 부트캠프] 유니티 게임 개발 5기 - [고양이 게임(2D 횡스크롤) Project (0) | 2025.07.04 |
[멋쟁이사자차럼 부트캠프] 유니티 게임 개발 5기 - 33일차 : 공격 판정 / 체력바 / 아이템 획득 (1) | 2025.07.02 |
[멋쟁이사자차럼 부트캠프] 유니티 게임 개발 5기 - 32일차 : DontDestroyOnLoad / 몬스터 FSM 설계 (2) | 2025.07.01 |
[멋쟁이사자차럼 부트캠프] 유니티 게임 개발 5기 - 31일차 : 탐험 씬(Adventure Scene) 레벨 디자인 (0) | 2025.06.30 |