제출 해야할 것이 많기에 먼저 할 수 있는 것 부터 정리하기로 한다.
- 바로인턴 프로그램 Quiz 완료!
- 비즈니스 커뮤니케이션 과제 제출 Day1 / Day2
- 선호 기업/연관 경험 제출
- 이력서 수정하기
- 게임 개발 과제
먼저 간단한 수준의 UI를 만들어 보았음.
이전프로젝트에서도 UI를 담당 했기에 생성을 매우 쉬움!
이걸 이제 데이터를 입력한 뒤, 데이터화 된 것을 출력 되도록 해야함!
대충 이런 느낌으로 설정 하고, 게임 로직을 만든 후에
메인 씬에 넣을 지, 게임 씬에 넣을지는 다시 생각 해보기로 한다.
먼저 플레이어를 만들고, 기존 유니티의 인풋시스템을 활용하여 이동로직을 만든다.
리소스 로드 명령어로 var json = Resources.Load<TextAsset>("JsonFiles/" + typeName.Replace("Data", "")).text;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class JsonHelper
{
/// <summary>
/// 제네릭 타입을 이용하여 Json 역직렬화를 할 수 있는 함수 입니다.
/// </summary>
/// <typeparam name="T">타입</typeparam>
/// <param name="json">Json 데이터</param>
/// <returns>해당 제네릭 타입으로 역직렬화된 배열을 반환합니다.</returns>
public static List<T> FromJson<T>(string json)
{
Wrapper<T> wrapper = JsonUtility.FromJson<Wrapper<T>>(json);
return wrapper.datas;
}
/// <summary>
/// 제네릭 타입을 이용하여 Json 직렬화를 할 수 있는 함수 입니다.
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="array"></param>
/// <returns></returns>
public static string ToJson<T>(List<T> array)
{
Wrapper<T> wrapper = new Wrapper<T>();
wrapper.datas = array;
return JsonUtility.ToJson(wrapper);
}
[Serializable]
private class Wrapper<T>
{
public List<T> datas;
}
}
UI 디자인은 언제나 고민고민~ 여기다 놓을까 저기다 놓을까 너무 별로인가?
고민만 하다가ㅠㅠ 사실 있는 리소스를 최대한 사용 하고싶기도 하고
메인 게임에 쓰일 UI들을 정리 하는 중!!
본격적으로 Player를 넣고, 애니메이션을 설정한다.
Idle, Dead, Run 3가지를 넣고,
아마 Attack은 자동공격으로 돌릴 예정이라
따로 애니메이션 스프라이트가 없는 것 같다
같은 방식으로 모든 몬스터들도 애니메이션을 설정 할 예정!
Physics.Overlap 사용 적 감지 및 공격 - 처음 보는 메서드라 검색해보았다!
💡 Physics.Overlap은 Unity에서 충돌 감지를 위한 함수들의 집합
- 특정 모양(예: 구, 상자, 캡슐 등)을 기준으로 겹치는 콜라이더들을 탐색하는 데 사용됩니다.
📗 함수 이름설명 (3D) - (2D는 Physics2D.OverlapCircle, Physics2D.OverlapBox, Physics2D.OverlapArea)
Physics.OverlapSphere | 구 모양으로 겹치는 콜라이더 검색 |
Physics.OverlapBox | 박스 모양으로 겹치는 콜라이더 검색 |
Physics.OverlapCapsule | 캡슐 모양으로 겹치는 콜라이더 검색 |
예시1
void DetectNearbyObjects()
{
float radius = 5f;
Vector3 center = transform.position;
Collider[] hits = Physics.OverlapSphere(center, radius);
foreach (Collider hit in hits)
{
Debug.Log("Nearby object: " + hit.name);
}
}
예시2
void DetectBoxArea()
{
Vector3 center = transform.position;
Vector3 halfExtents = new Vector3(2, 2, 2);
Collider[] hits = Physics.OverlapBox(center, halfExtents);
foreach (Collider hit in hits)
{
Debug.Log("Detected in box: " + hit.name);
}
}
🔍 언제 쓰나요?
- 범위 내 적 탐색
- 아이템 감지
- 환경 내 충돌 검사
- 근처 오브젝트와의 상호작용 등
'Today I Learn' 카테고리의 다른 글
25/04/29 | TIL RayCast 재정의하기 (0) | 2025.04.29 |
---|---|
25/04/28 | TIL 3D Survival 재수강 - Singleton (0) | 2025.04.28 |
25/04/17 | TIL 바로인턴 11기 신청 및 OT내용정리 (1) | 2025.04.18 |
25/04/07 | TIL 알고리즘3 - A*알고리즘과 이진힙구조 (0) | 2025.04.07 |
25/04/04 | TIL UI에 마우스 포인터시, 인풋처리 (0) | 2025.04.05 |