본문 바로가기

전체 글

(79)
6주차 - 2D 게임 프로젝트 나의 구현 파트는 몬스터.. 오늘은 기본적인 몬스터의 움직임, 플레이어의 추적을 구현해볼 것 몬스터의 이동 최대한 재활용성을 살리는 코드를 짜보자.. 1. MonsterController 에서 이벤트를 관리하자. MonsterStats : 몬스터 스탯 MosnterMovement : 움직임 MonsterLifeCycle : 대미지 및 생명 관련 MonsterAnimationController : 애니메이션 근거리 몬스터, 원거리 몬스터에 따라 attck 스크립트를 사용 몬스터 콘트롤러에 [RequireComponent(typeof())] 어트리뷰트를 사용해 필수 스크립트를 설정해주자 움직임 MosnterController 에 OnMoveEvent 델리게이트에 연결해서 사용하자 플레이어가 몬스터의 영역에 ..
6주차 - Object Pool 예제 ( + Animator.StringToHash() ) 목차 1. Object Pool 예제 2. Animator.StringToHash() 1. Object Pool 예제 Object Pool? 더보기 프로그래밍에서 리소스를 효율적으로 관리하기 위해 사용되는 디자인 패턴입니다. Object Pool 은 미리 생성된 객체들을 보관하고 필요할 때 재사용함으로써 객체 생성과 소멸의 오버헤드를 줄이고 성능을 향상시킵니다. 1. 스크립트 작성 이름, 프리펩, 사이즈를 가지고있는 구조체를 생성하고 구조체를 가지고있는 리스트 생성합니다 [System.Serializable] public struct Pool { public string tag; public GameObject prefeb; public int size; } public List pools; public..
MiniMap (2D) 탑다운 형식의 게임의 MiniMap 만들기 1. 카메라를 새로만들어 Projection 을 Orthgraphic으로 바꿔줍니다 카메라를 통해 미니맵을 만들 것이기 때문에 원근감없이 일정한 크기로 보여줄 것입니다 2. 카메라가 화면에 렌더링 되는것을 막아야 하기 때문에 카메라에 Target Texture에 랜더링된 텍스쳐를 넣어줄 것 입니다 폴더를 하나 만들어 Render Texture 을 만들어 줍니다. 3.새 레이어를 추가합니다, main Camera 에 Culling Mask로 랜더링할 레이어를 선택할 수 있습니다. Minimap 레이어만 해제해 줍니다. 새로 만들어진 Camera 에 Culling Mask는 Minimap 만 설정해줍니다. 새로 만든 카메라에는 Minimap 레이어만 랜더링하게 되고..
5주차 - Tilemap(2D) 1. 그리기 순서 설정 2. Sprite Pivot 설정 3. Tilemap 4. Tilemap 충돌 정보 추가히기 5. 타일맵 콜라이더 최적화 1. 그리기 순서 설정 2D 에서 화면상에 캐릭터가 어떤 오브젝트보다 뒤에있는 경우 앞에 있는 오브젝트에 캐릭터가 가려져야 합니다. 이러한 그리기 순서를 해결 하기 위해 간단하게 그래픽스 설정을 해줍니다. 2d 에서는 y좌표값이 작을수록 나중에 나중에 그려져야 합니다. Edut - Project Setting로 이동해 좌측 메뉴 Graphics로 들어갑니다. Camera Settings에서 Transparency Sort Mode 필드를 찾습니다. 여기에서 스프라이트가 그려지는 순서가 결정됩니다. 드롭다운 메뉴를 통해 Default에서 Custom Axis로 변..
Cinemachine 을 사용한 카메라 이동 범위 제한 (2D) 1. Cinemachine VirtualCamera 생성 카메라 설정 카메라 범위 설정 2. Cinemachine Confiner Cinemachine Confiner를 추가하려면 Virtual Camera 인스펙터의 하단에서 Add Extension 드롭다운 메뉴를 클릭하고 CinemachineConfiner를 선택합니다. 3. 새 게임 오브젝트를 선택하여 이름을 CameraConfiner로 변경합니다. Polygon Collider 2D 컴포넌트를 추가해 줍니다. Polygon Collider 2D에서 Edit Collider를 눌러 맵 테두리로 설정해줍니다. 4. Cinemachine VirtualCamera 에 추가한 Cinemachine Confiner에 Confiner mode 를 2d 로 해..
5주차 - Quest 만들기 순서 퀘스트 클래스 만들기 퀘스트 만들기 1. 퀘스트 클래스 만들기 퀘스트마다 공통적으로 가지고있는 변수들을 만들고 필수 메서드를 virtual 로 만들어 퀘스트마다 오버라이딩을 해준뒤에 상속시켜 퀘스트를 만들 것 입니다. ShowQuestInfo - 퀘스트 정보를 보여주는 메서드 Reset - 퀘스트 포기를 했을시 또는 반복 퀘스트의 경우 퀘스트 진행도를 초기화 시기는 메서드 CheckCondition - 퀘스트 클리어 조건을 충족하는지 확인하는 메서드 CheckCondition(string targetName) - 퀘스트 클리어 조건 충족하는지 확인하는 오버로딩 메서드 Clear - 퀘스트 클리어시 실행할 메서드 ClearInfo - 퀘스트 클리어시 보여줄 UI public enum QuestStat..
Lightning (Shader + VFX) 순서 1. Lightning Shader 만들기 Rectangle와 Noise를 사용해 번개를 만들 것 입니다. Noise는 Time 과 Tilling And Offset 을 사용해 일정한 방향으로 움직이게 만듭니다. Rectangle은 적절하게 직사각형을 만들어주고 UV 맵과 위 Noise를 Lerp로 연결해 준뒤 Rectiagle에 연결해 줍니다. 보간 비율은 UV에 가깝게 설정하면 됩니다. 완성된 Rectangle을 Fragment Alpha에 연결하고, 색을 입혀서 Base Color에 연결해줍니다. 2. Vfx 만들기 Single Burst Output Particle Mesh 쉐이더 적용 Pivot 설정 번개 시작지점, 번개 끝나는 지점 플레쉬 만들기 번개 끝나는지점 스파크 만들기 1.Lig..
LeetCord - 300.Longest Increasing Subsequence 순서. 이중포문을 사용한 해결. 이진탐색을 사용한 해결. 1. 주어진 배열의 길이만큼의 DP 배열을 생성하고, 모든 요소를 1로 초기화합니다. 2. 이중 포문을 사용하여 배열이 순차적으로 증가하는 부분 수열의 정보를 DP에 기록합니다. 내부 포문에서는 현재 요소(nums[i])와 이전 요소(nums[j])를 비교하여, 현재 요소가 더 큰 경우에만 DP 값을 갱신합니다. dp[i] 값은 dp[j] + 1과 비교하여 더 큰 값을 선택합니다. 모든 요소에 대해 반복하면서 최대 부분 수열의 길이를 업데이트해나갑니다. public class Solution { public int LengthOfLIS(int[] nums) { int[] dp = new int[nums.Length]; int answer = 1; ..