| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- loop
- DP
- Programming
- Tutorial
- 백준
- 오류
- dfs
- Material
- dynamic
- Class
- Algorithm
- UE5
- python
- 시작해요 언리얼 2022
- parameter
- 기초
- Basic
- 프로그래밍
- guide
- C#
- Unreal Engine 5
- 문제풀이
- c++
- 파이썬
- 재귀
- Unity
- github
- w3school
- String
- W3Schools
- Today
- Total
행복한 개구리
Unity 3D 개인프로젝트 21.04.24. 본문

당장 구현해야 하는 부분
- 회피시 위치이동
- 아이템 주우면 인벤토리 및 캐릭터와 연동
============================================================================
아이템 인벤토리 및 캐릭터연동을 공부하는데 잘 안 돼버렸다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestHero : MonoBehaviour
{
public float speed = 2f;
public Animation anime;
public System.Action<int> OnGetItem;
private Coroutine moveRoutine;
void Start()
{
this.moveRoutine = this.StartCoroutine(MoveForwardImpl());
}
public void Stop()
{
if(this.moveRoutine != null)
{
this.StopCoroutine(this.moveRoutine);
}
}
IEnumerator MoveForwardImpl()
{
while (true)
{
this.transform.Translate(Vector3.forward * this.speed * Time.deltaTime);
yield return null;
}
}
private void OnTriggerEnter(Collider other)
{
if(other.tag == "Item")
{
var item = other.GetComponent<TestItem>();
this.OnGetItem(item.id);
Destroy(item.gameObject);
}
}
// Update is called once per frame
void Update()
{
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestItem : MonoBehaviour
{
public int id = 100;
public float speed = 10f;
// Update is called once per frame
void Update()
{
this.transform.Rotate(0, this.speed * Time.deltaTime, 0);
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class UITestItem : MonoBehaviour
{
public int id;
public Image icon;
public void Init(int id, Sprite icon)
{
this.id = id;
this.icon.sprite = icon;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TEST : MonoBehaviour
{
public Button open;
public Button close;
public UITestInven inven;
public TestHero hero;
// Start is called before the first frame update
void Start()
{
this.hero.OnGetItem = (id) =>
{
Debug.LogFormat("{0}을 획득했습니다.", id);
this.inven.AddItem(id);
this.hero.Stop();
};
this.inven.Close();
this.open.onClick.AddListener(() =>
{
this.inven.gameObject.SetActive(true);
});
this.close.onClick.AddListener(() =>
{
this.inven.gameObject.SetActive(false);
});
}
// Update is called once per frame
void Update()
{
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
using UnityEngine.UI;
public class UITestInven : MonoBehaviour
{
public SpriteAtlas atlas;
public GameObject[] empty;
public GameObject prefab;
List<UIItem> items = new List<UIItem>();
public void Open()
{
this.gameObject.SetActive(true);
}
public void Close()
{
this.gameObject.SetActive(false);
}
public void AddItem(int id)
{
var parent = this.empty[this.items.Count].transform;
var go = Instantiate<GameObject>(this.prefab, parent);
var uiItem = go.GetComponent<UITestItem>();
var icon = this.atlas.GetSprite("inventory_item_sword_A");
uiItem.Init(id, icon);
}
}
일단은 어떤 원리로 돌아가는지 했다. 오류가 났지만 이해는 했으니 테이블도 있는 실전에 적용해보자.
(오류는 인벤토리에서 AddItem하면서 uiItem.Init에서 발생했다.)
============================================================================

Item이란 빈 오브젝트를 생성하여 그 안에 보여줄 물체를 넣어두고 Item의 태그를 Item으로 바꿔주었다.
그리고 HeroController에서 OnTriggerEnter을 이용하여 둘이 부딪히면 아이템이 사라지게 했다. 아직은 데이터 테이블이 없어서 여러 에러가 나지만 테이블을 만들고 실행한다면 정상작동 할 듯 하다.
-데이터 테이블 만들기
-먹을때 OnGetItem대리자로 아이템의 id를 구하고 그 id의 해당되는 아이템을 캐릭터의 오른손에 쥐어주기 (오른손의 위치는 스크립트에 바인딩 시키자.)
-회피기는 뒤쪽으로 (3정도?) 적당한 속도로 이동시키게 수정하자. 그리고 아이템을 먹으면 인벤토리에 객체를 띄우는데 그 이미지는 스프라이트아틀라스를 이용하고 아이디와 수량은 전부 코드로 넘겨주자. 버튼도 하나 달아서 클릭하면 간략한 정보가 뜨게 할 예정이다.
이걸 다 하고 시간이 넉넉하다면
-로그인 구현
-적과의 싸움 구현
-애니메이션 이용해서 으로 스킬 애니메이션 되면 구현
'Unity > Project : Unity 3D Untitled' 카테고리의 다른 글
| Unity3D 개인프로젝트 21.04.25. (0) | 2021.04.25 |
|---|---|
| Unity 3D 개인프로젝트 21.04.20. (0) | 2021.04.20 |
| Unity 3D 개인프로젝트 21.04.19. (0) | 2021.04.20 |
| Unity 3D 개인프로젝트 21.04.18. (0) | 2021.04.20 |
| Unity 3D 2021.04.17~ (0) | 2021.04.17 |