분류 전체보기 98

생성형 AI를 활용하여 간단한 3D 캐릭터를 만들어 보자

오늘은 쉬어가는 느낌으로다가제가 시도했던, AI를 활용하여간단한 3D 캐릭터 모델 만드는 방법에 대해 정리해 보고자 합니다. 3D 프로젝트를 진행하면서 매번 불편했던 게마땅한 모델을 구하기가 힘들다는 점이었습니다. 그나마 배경 오브젝트 같은 건 무료 AI를 통해 생성한 걸 사용해도 그럭저럭 괜찮았지만캐릭터의 경우는 무료에, 비교적 깔끔하게 떨어질 수 있는방법을 못 찾아서 기본 에셋을 매번 재활용하고 있었습니다. 그러다가 이번에 손쉽게 AI로, 무료로, 빠르게쓸만한 캐릭터를 만들 방법을 알아냈고 그 방법을 공유하고자 합니다. 방법 참고한 영상을 따라 한 내용입니다.아래에 있으니 직접 보시면 좋을 것 같습니다. 1) 생성형 AI를 통해 원하는 이미지를 만든다. TipGPT한테 프롬프트 작성해달라고 한 후그 ..

카테고리 없음 2024.12.17

유니티 - 스프라이트(Sprite)가 겹칠 때 검정으로 나오는 문제 해결

오늘은 스프라이트(Sprite)가 겹칠 때검정으로 나오는 문제를 해결한 과정을 공유하고자 합니다. 사실 이 문제를 겪고 해결한 지는 꽤 시간이 지났었는데(대략 반년 전 처음 진행했던 프로젝트에서 겪었던 문제 ㄷㄷ)올 한 해 동안 진행해 왔던 프로젝트들을 정리하면서이 부분은 한번 작성해 봐도 좋겠다는 생각에 써봤습니다. 당시 내가 원했던 결과  / 완성본  문제 상황  플레이를 진행하고 애니메이션 효과가 재생되면 저렇게 겹치는 부분이 이상해졌습니다.  원인  기본적으로 Unity는 알파 블렌딩을 사용하는데,겹치면서 색상이 중첩되어 더 어둡게 보이는 현상이 발생한 것이었습니다. 해결 과정처음엔 Material을 만들어서 처리하는 방법을 찾아 시도했었는데 당시에는 입문한 지 얼마 안 되어 잘 몰랐을 때라 중간..

유니티 2024.12.16

알고리즘 - A*에 대해 알아보자

오늘은 A*알고리즘에 대해 정리해 보고자 합니다. A* 알고리즘A*알고리즘은 대표적인 길 찾기 알고리즘으로서 보통 A* 같은 알고리즘을 휴리스틱(heuristic) 하다고 설명하던데간단히 정리하자면  "경험에 기반하여 문제를 해결하는 방식" 정도로 이해하시면 됩니다. 완벽하게 입증되진 않았지만대신 실용적이고 어느 정도 빠르게 원하는 답에 접근할 수 있기에이러한 방식을 사용하는 듯합니다. 공식으로 정리하자면 다음과 같습니다.  f(n) = g(n) + h(n)   g(n): 시작 노드에서 현재 노드까지의 실제 비용h(n): 현재 노드에서 목표 노드까지의 추정 비용(휴리스틱)f(n): 총 예상 비용  추정 비용에 원하는/해당하는 가중치를 줌으로써,휴리스틱한 함수가 적절하다면 항상 최적의 경로를 찾는다는 게 ..

카테고리 없음 2024.12.13

벡터의 내적(Inner Product)과 외적(Cross Product)

오늘은 내적과 외적에 대해 정리해보고자 합니다. 캐릭터가 어느 쪽을 향하고 있는지, 어디로 움직이고 있는지,얼마나 빨리 움직여야 하는지 등 게임 속에서 많은 요소들이 벡터 연산을 기반으로 하고 있습니다. 분명 고등학교랑 대학교 수업에서 배운적이 있지만설명하려니 개념정리가 안되어 있는 느낌이어서 작성해봤습니다. 벡터 크기와 방향을 모두 가지고 있는 물리량 스칼라 크기만 있고 방향이 없는 물리량 내적내적은 두 벡터의 곱 두 벡터가 수직일때 내적은 0 이다. 벡터의 내적의 결과값은 벡터가 아닌 스칼라  언제 사용할까  내적을 사용하면  두 백터 사이의 각도를 구할 수 있습니다. 두 벡터 간의 각도 계산을 통해 플레이어가 적을 바라보는 방향을 확인할 수도 있고,물체가 플레이어 보다 앞에 있는지 뒤에 있는지 판단..

카테고리 없음 2024.12.12

유니티 - Find 계열 함수 사용 지양해야 하는 이유

오늘은 Find 함수 사용과 관련해 정리하고자 합니다. Find 계열 함수들은 이름을 통해 해당 오브젝트를 찾아주는 기능을 제공합니다. 편리해 보여서 자주 사용할 것 같지만 대부분 사용을 지양하더군요.  왜일까요?  1. Find 계열 함수들은 씬(Scene) 전체를 순회하면서 해당 이름을 검색하는 문자열과 비교합니다.이 과정에서 성능적으로 문제가 발생할 수 있습니다.2. 여러 개의 같은 이름(혹은 타입 등)의 오브젝트가 있을 경우 의도치 않은 결과가 발생 수 있습니다.3.컴파일 - 코드 - 에서 확인할 수 있는 게 아니라 런타임 도중에 이름이 변경되거나 변동이 생기면 오류가 나기 쉽습니다. 이러한 이유로 사용을 지양하고 있는 듯합니다. 그러면 특정 오브젝트를 찾으려면 어떻게 하는 게 좋을까요?Find ..

카테고리 없음 2024.12.11

유니티 - 프리팹 동적 생성 시 스크립트 값 적용 문제

오늘은 쉬어가는 느낌으로프로젝트를 진행하면서 겪은 상황을 공유하고자 합니다. 문제 상황소환 가능한 유닛의  수를 제한하는 코드를 작성했습니다.  [SerializeField]private int _maxSummonUnitCount = 5; //최대 소환 가능 유닛 수 public int MaxSummonUnitCount { get => _maxSummonUnitCount; set => _maxSummonUnitCount = value; } // 소환 가능 수 비교 public bool CanSummonUnit() { bool canSummon = SummonUnitCount   기존에는  _maxSummonUnitCount = 1; 로 두고 진행하다가5로 변경..

카테고리 없음 2024.12.10

C# 얕은 복사(Shallow Copy) 깊은 복사(Deep Copy)

오늘은 면접 대비 질문을 준비하면서 잘 모르는 내용이 나와서,  얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)에 대해 정리해 보고자 합니다. 얕은 복사 객체의 참조 값만 복사하는 방식 참조(메모리 주소)만 복사하기에실제 데이터는 힙 영역의 동일한 메모리를 가리키게 되고,한쪽에서 내부 값을 변경하면 다른 쪽도 영향을 받는다. 예시 더보기// 얕은 복사 예시 public class Player {     public string Name;     public List Items; } Player player1 = new Player {      Name = "원본",      Items = new List { "검", "방패" }  }; // 얕은 복사 수행 Player player2 ..

C# 2024.12.09

유니티 에러 - 'ClassName' is missing the class attribute 'ExtensionOfNativeClass'!

간단하게 리팩토링을 하다가 마주한 에러!  처음엔 에러 문구를 클릭해도 아무것도 안 뜨길래 뭐지 싶었다.  원인  유니티 씬 Hierachy 에 MonoBehaviour를 상속받지 않는 오브젝트가 있으면 발생하는 문제 찾아보니 이전에 WaveDataManager라는 스크립트를 붙여두었다가수정하면서 MonoBehaviour를 안 쓰게 되었는데, 이때 에러가 발생한 거였다.   검색하니 바로 나와서 생각보다 간단하게 해결할 수 있었다. 휴..

유니티 2024.12.06

유니티 - 프로파일링을 해보자 #2 Memory 프로파일러

2024.12.04 - [유니티] - 유니티 - 프로파일링을 해보자 #1 Unity 프로파일러 지난 시간에 이어 오늘은 Memory 프로파일러 사용법을 정리하고자 합니다. 메모리 관리는 왜 해야 할까?기기마다 메모리 성능의 차이가 있습니다. 모바일은 PC와 달리 물리적 메모리만 사용 가능하며디스크를 통한 가상 메모리 확장이 불가능합니다.이는 OS가 메모리 관리를 엄격히 수행하며,과다 사용 시 강제 종료되는 상황이 발생할 수도 있다고 합니다. 다른 예로 Xbox One 본체는 포그라운드에서 실행되는 게임에 사용할 수 있는 최대 메모리가 5GB로 제한된다고 합니다. 따라서 게임을 개발함에 있어서타깃 기기에 알맞은 메모리 관리가 필요합니다.Memory Profiler Unity Profiler에서도 Memor..

유니티 2024.12.05

유니티 - 프로파일링을 해보자 #1 Unity 프로파일러

2024.12.02 - [유니티/2D] - 유니티 - 스프라이트 아틀라스(Sprite Atlas)에 대해 알아보자 오늘은 프로파일러를 활용하여 프로파일 하는 법에 대해 정리 해보고자 합니다. 이전에 스프라이트 아틀라스에 대해 정리하면서 언급했었는데,당시 강의 자료에서 이미지가 어떻게 그려지는지 프로파일러를 사용하여 보여주시더군요. 보면서 신기하기도 하고, 사용법을 익혀두면 좋겠다는 생각에  프로파일러의 사용법과 언제 사용하는지 간단하게 작성해 봤습니다.Unity 프로파일러 Unity 프로파일러는 애플리케이션의 성능 정보를 알려주는 툴입니다. 보통 프로파일러로 얻은 정보를 활용하여어느 부분에서 문제가 발생하고 있는지 파악하기 위한 용도로 사용되는 듯합니다.(= 게임의 최적화를 위한 문제 파악 분석에 사용된..

유니티 2024.12.04