본문 바로가기

내일배움캠프

(53)
[TIL 24.05.28] Rigidbody Addforce . 목   차 AddForce와 ForceModeAddForceForceMode   마무리마무리
[TIL 24.05.26~27] UI 업데이트, 제네릭 싱글톤, RenderMode . 목   차 일정 간격으로 UI 업데이트fixedUpdate는 실제 시간을 기준으로 반복실행되기 때문에 Hunger 등의 UI를 줄일때도 이걸 이용하면 시간에 따라 줄어들지 않을까 하는 의문이 생겼다. 하지만, 그렇게 하면 UI가 부자연스럽게 줄어들 수 있다는 문제가 있다는 것을 알게 되었다. 다. 따라서 우선 Update문에 해당 실행을 하고, Time.deltaTime을 곱해줌으로써 기기의 성능에 관계없이 줄어들게 하는 것이 낫다.제네릭 싱글톤2주차 스탠다드 꾸준과제, 챌린지 꾸준과제를 거쳐 싱글톤을 좀 더 탐구하고 내가 앞으로 계속 사용할 싱글톤을 만들어냈다.  나는 모든 Manager 스크립트를 하나의 오브젝트에 컴포넌트로 추가해 관리를 하고 싶었다. 그래서 다음과 같은 제네릭 싱글톤을 만들었다..
[TIL 24.05.24] Unity 게임 개발 숙련 강의록(1) . 목   차 플레이어 만들기Cursor LockCursor.lockState = CursorLockMode.Locked; //커서 안보이게.InputActionPhase.Started vs PerformedStarted: 누르는 그 순간.performed: 눌렀다 떼는 순간. 따라서, 연속적인 움직임이 필요하다면 performed가 더 적절하다. Started로 하면 누르는 순간 한 번 이벤트를 보내고 더 이상 이벤트를 보내지 못한다.3D Move 함수private void Move(){ Vector3 dir = transform.forward * curMovementInput.y + transform.right * curMovementInput.x; //방향 dir *= moveSpeed;..
[TIL 24.05.23] 제네릭 싱글톤 .. 목   차 제네릭 싱글톤Instance 프로퍼티public static T Instance{ get { // get instance of singleton //인스턴스가 생성되었지만 미할당 상태. if (instance == null) { instance = FindObjectOfType(); } //인스턴스가 생성된 적 없음. if (instance == null) { GameObject gameObject = new GameObject(); //새 게임오브젝트 instance = gameObject.AddComponent();..
[TIL24.05.22] ContextMenu . 목   차 ContextMenu특정 메서드를 컨텍스트 메뉴(인스펙터 창에서 컴포넌트 우클릭시 나옴)에 추가할 수 있다.3개의 인자까지 사용가능하다.1. (필수) string: 컨텍스트 메뉴에 추가될 이름.2. (선택1) bool: true일 때 이 attribute가 달린 함수를 검증함수로 만들어 다른 메뉴의 활성화 여부를 bool값으로 반환하게 한다.3. (선택2) int: 각 메서드의 우선순위 설정. 가장 작은 값이 가장 위에 올라간다. Rebind 하는 법spaceAction.ApplyBindingOverride("/escape");    마무리마무리
[TIL24.05.21] InputActionAsset클래스 글의 요약 설명 부분. 목   차 InputActionAsset클래스InputActionAsset 클래스 네임스페이스: UnityEngine.InputSystem 어셈블리: Unity.InputSystem 속성 name: InputActionAsset의 이름을 나타냅니다. actionMaps: InputActionMap 객체들의 컬렉션을 포함합니다. 주요 메서드 FindActionMap(string name, bool throwIfNotFound = false): 이름으로 InputActionMap을 찾습니다. FindAction(string name, bool throwIfNotFound = false): 이름으로 InputAction을 찾습니다. Enable(): 모든 액션 맵과 액션을 활성화합니다...
[TIL24.05.18~20] 라이프사이클, Active, 파티클 . 목   차 유용한 라이프사이클 함수들OnApplication~ 함수들은 Unity에서 제공하는 라이프사이클 메서드들이다. (다른 라이프사이클 메서드 예: Awake)퍼즈 버튼을 구현하려다 우연히 발견해서 자세히 알아보게 되었다.OnApplicatoinPause(bool pause)앱이 일시정지 상태에 들어갈 때와 다시 활성화될 때 호출된다. yield가 사용이 가능하다. (yield: coroutine할 때 쓰던 그 키워드.) bool pause: true면 pause, false면 resume. 주로 모바일 환경에서 사용된다.이 함수가 작동하는 것은 주로 화면의 백그라운드 전환 등이기에, 만약 사용자에게 전화가 오거나 하면 어플을 잠시 일시중지해야 하기 때문이다. 일시정지 버튼을 통해 Pause하는..
[TIL24.05.17] InputSystem 이벤트 발생시점 목   차 fixedUpdate의 중요성Input Action으로 키입력을 받을 때 이벤트는 Interaction: Press&Release 기준 내가 누를 때 한 번, 뗄 때 한 번 발생한다. 즉, 매 순간 지금 상태를 업데이트하는 방식이 아니므로 만약 누르고 떼지 않은 상태에서 인게임 변화가 발생해야 한다면, Update 항목 쪽에서 새로고침해줘야 한다!!! 또 버튼을 누르고 있는 상태일 때 어떤 상태를 유지시키려면 유지시켜야 하는 쪽에서 이벤트 발생 시 들어온 bool값을 홀드하고 있어야 한다. 이 방법을 통해 BoostGage의 게이지 문제를 해결했다.  마무리하루종일 리팩토링과 버그픽스, 깃허브 conflict 해결하느라 정작 새로운 기능은 만든게 없는 날이다.
[TIL24.05.16] Unity 개인프로젝트 입문 해설 글의 요약 설명 부분. 목   차 Vector벡터 덧셈 = 다이아몬드 모양 V1(x, y) + V2(x, y) = V3(x + x, y + y) 뺄셈은 반대로 x끼리 y끼리 빼기. -> 이것을 통해 몬스터가 플레이어를 쫓게 할 수 있음.(A 가 B를 쫓는 방향 = B벡터 - A벡터) 이미지 Asset투명 이미지의 사이즈가 너무 클 때: Sprite Editor 에서 투명 부분의 크기를 자를 수 있음.이미지 간 일관성을 원할 때 Project 창의 이미지를 클릭하면 PPU를 통해 사이즈를 조정하면 된다. Anchor오브젝트의 위치를 앵커의 위치에서 일정 거리 떨어지게 함. 즉, 앵커만 위치를 바꾸면 화면의 크기를 바꾸어도 앵커의 위치에 비례한 곳에 오브젝트가 위치하게 됨.앵커를 좌우로 갈라놓으면 화면 변화..
[TIL 24.05.14] Unity 게임 개발 입문 강의록(3) 글의 요약 설명 부분. 목   차 오브젝트 풀 구현객체를 미리 생성해두고, 필요할 때 가져다 쓴 후 다시 풀에 반납하는 방식.개인프로젝트를 하기 전에 이 강의를 듣기는 했지만, 잘 활용하지 못할 것 같아 적용을 하지는 못했던 것이다. 팀프로젝트에서는 한 번 써보고 싶다. 사용하는 이유: Instantiate와 Destroy 라는 비용이 큰 작업을 최소화하기 위하여. 특히 빈번히 생성하고 파괴되는 객체를 주로 오브젝트 풀링으로 한다.  말하자면 시간복잡도를 위해 공간복잡도를 희생시키는 것으로 밸런스가 중요할 것 같다.      마무리마무리
[TIL 24.05.13] Unity 개인프로젝트 입문(2) 글의 요약 설명 부분. 목   차 Animation Override Controller마음이 급해서 일단 GPT로 배운 내용 스크랩해서 올린다. 나중에 개인과제 제출 완료하고 추가 자료와 함께 수정... 할 수도 있고 아닐수도 있고. AnimatorOverrideController 사용하기AnimatorOverrideController 생성하기Unity 에디터에서 Project 탭을 열고, Create > Animator Override Controller를 선택합니다.생성된 Override Controller에 이름을 지정하고 (예: PlayerAnimationsOverride), 플레이어의 원본 Animator Controller를 드래그하여 Controller 슬롯에 할당합니다.애니메이션 클립 교체..
[TIL 24.05.10] Unity 개인프로젝트 입문(1) 강의를 들으면서 따라하기만 해서 따라는 했지만 결국 제대로 이해하지 못한 내용이나, 새롭게 알게 된 내용에 대해 정리했다.  목   차 Input SystemInput Actions 설정하기Input System 패키지를 다운받는다.Input Actions Asset을 생성한다. (Input 폴더)Action Maps 및 Actions 추가: Action Map 예시: 캐릭터 컨트롤, 메뉴 탐색 등.Actions 예시: Move, Jump, Fire 등.Bindings 설정: 각 Action에 대해 어떤 키를 눌러야 상호작용할 것인지 등을 정하는 작업.Control Schemes: 다양한 입력장치를 위한 것. (키보드&마우스 / 게임패드 등)스크립트에서 Input Actions 사용하기다음은 내가 인터넷..
[TIL 24.05.09] Unity 게임 개발 입문 강의록(2) 이 5시간짜리 강의를 하루면 다 들을 수 있다고 생각한 내가 정말 오만했다는 사실을 깨달아버렸다... 주말에 갠프하는 한이 있더라도 오늘까지는 강의를 다 듣고야 말겠다. 목   차 조준(Aim) 시스템쿼터니언(Quaternion)Quaternion: 4가지 숫자가 관여하는 개념이며, 라틴어로 직역하면 4개의 수 라는 뜻이다.x, y, z는 3차원 공간의 좌표에 추가적으로 w는 회전과 관련된 변수이다. #짐벌 락 문제이 그림을 보면 pitch 각도(핑크색)을 90도로 회전시켰을 때 남은 롤 축과 요 축(파랑&초록)이 동일해져 버리는 현상을 확인할 수 있다. 이는 곧 독립적인 세 회전축 중 하나를 잃었다는 뜻으로, 특정 방향으로의 회전이 불가능해져 버린다. 더 자세한 걸 알고싶으면 위 이미지의 출처인 아래 ..
[TIL 24.05.08] Unity 게임 개발 입문 강의록(1) 강의를 들으면서 동시에 내가 배운 내용을 작성하는 강의록이다. 확실하게 알고 있다 생각하는 내용 일부는 생략할 수도 있다.  목   차 Unity 설치 및 소개Unity 설치하는 법버전을 2022.3.17으로 맞춰야 한대서 찾으러 갔지만, 처음에는 암만 봐도 찾을 수 없었다!딱 요만큼만 보이고, 내가 찾는 버전은 안보였다. 하지만, 강의에서 시키는대로 하니 내가 필요한 버전을 허브에다가 무사히 다운로드 받을 수 있었다.Archive >  download archive(하이퍼링크) > 원하는 버전 찾기 > Unity Hub 버튼 클릭이 과정을 따라가면 알아서 유니티 허브에서 해당 버전의 다운로드가 시작된다.Unity 소개Unity의 개요이다. 하지만 대충은 알아도 아직 남에게 아무 자료 없이 설명할 정도는..
[TIL 24.05.07] 게임 업계에 대한 이해 . 목   차 게임 종류플랫폼 종류PCConsole모바일VR게임 장르 종류FPSRTSAOS방치형워 게임퍼즐벰서류프로젝트 종류라이브신규AAA인디게임 개발자 분류디렉터 (기획자)프로그래머의 주적. 이쪽에서 밀리면 프로그래머는 야근 확정이다. 물론 다른 어디든 마찬가지지만...벨런스 기획자: 몬스터 등 난이도 조절시스템 기획자: 상점 구매/판매 등 뼈대 만들기콘텐츠 기획자: 퀘스트 내용, 새 아이템 만들기, 보상 설정 등 살붙이기시나리오 기획자: 게임의 큰 세계관 만들기아트캐릭터 원화가: 캐릭터 모델러가 베이스로 삼아야 할 원화 제작(컨셉: 기획자)배경 원화가: 배경 모델러가 베이스로 삼아야 할 배경의 원화 제작(컨셉: 기획자)캐릭터 모델러: 캐릭터 원화를 바탕으로 3D 모델 제작배경 모델러: 배경 원화를 바..
[TIL 24.05.05~06] 5주차 강의-알고리즘 기초, 정렬 알고리즘 5주차 강의의 내용은 특히나 어렵기 때문에 원하는 만큼 조금씩 쪼개서 자세히 탐구한 후에나 하나씩 올리려 한다. 우선 오늘은 2일에 걸쳐 일요일에는 알고리즘 기초, 월요일에는 정렬 알고리즘에 대해 공부하고 이에 대한 TIL을 작성했다. 정렬은 이전에 배치고사 때 가볍게 훑어보았지만, 씹어먹지 않았기에 다시 정리했다. +)스파르타 TIL 제출란에 잘못 올려서 4주차 대신 이게 맨 위에 올라와있길래 그냥 월요일에 4주차를 재업했으니 둘이 바꿔서 생각해주시면 좋을 것 같아요...ㅇㅅㅇ 이게 액셀에서 하루에 여러 개 올리면 처음 올린 것만 링크가 연결되더라고요. 잘못 올린걸 내릴 수도 없고ㅠㅠ목   차 알고리즘 기초알고리즘(Algorithm)문제를 해결하기 위한 단계적인 방법입력을 받아 원하는 출력을 생성하기 ..
[P3-Team. TextRPG] 아스키아트 사이트 모음 + 크래딧 목   차 patorjk.com아래의 Sparta 아스키아트를 만들 때 사용한 사이트이다. 그라데이션 작업같은 것도 할 수 있는 사이트다.https://wepplicatoin.github.io/tools/asciiArtGen/아래의 Credit 아스키아트를 만들 때 사용한 사이트이다. 이 사이트에선 이미지를 아스키아트로 만드는 작업도 해준다.textkool.com스파르타 던전 해설영상에서 소개했던 아스키 아트 사이트다. 밑에는 없지만, 우리 조 스파르타 던전 로고를 만드는 데에 사용했다.크래딧 형식내가 만든 크래딧은 크래딧 제목과 각 조원들이 할 일, 우리가 이 게임을 만드는 데에 사용한 툴, 그리고 우리 조를 모이게 한 "스파르타" 로고를 마지막의 Special Thanks를 넣었다.
[P3-Team. TextRPG] PR 타이밍, 스프레드 시트로 DB관리 목   차 Pull Request의 타이밍논쟁의 원인은 다음과 같다. 기능 하나가 커서 Pull Request할 때 조원이 봐야 할 양이 너무 많다면 큰 기능 하나를 쪼개서 올려야 한다.완전한 기능 하나가 된 후에야 Pull Request를 해야 한다.이 논쟁의 답을 알고 싶어 총 3분한테 찾아가 물어봤다.유록님 의견조원이 한번에 다 못 볼 양이라면 쪼개는게 맞다. 회사 같은 곳에서는 다른 의견을 가질 수 있지만, 서로의 수준에 맞게 맞춰주는게 좋을 것 같다. 동욱님 의견어차피 지금 수준에서 버그나 에러 등이 난다고 해봤자 튜터 찾아가면 못고치기가 쉽지 않다. 솔직히 조원끼리 수준차이 나봐야 도토리 키재기인데 그냥 나를 찾아와라. 만약 회사 기준이라면 회바회 케바케기에 그 회사 매뉴얼/규정을 따라라.관우..
[P3-Team. TextRPG] Enemy 구현, 로그인 화면 개선 본격적인 게임 구현을 시작했다. 조장님의 베이스 코드를 기반으로 하여 내 스타일을 최대한 그쪽에 맞추려 노력했다. 목   차 몬스터(Enemy) 구현몬스터 관련 클래스 & 데이터 구현Base코드에서는 Enemy클래스가 Unit을 상속받은 상태로 기본 생성자만 있는 상태였다. Item객체를 베이스코드에서 ItemDataManager로 관리하는 것을 보고 나는 우선 EnemyDataManager을 만들었다. 그 후, EnemyDataManager은 싱글톤 처리를 해주었다.public static EnemyDataManager instance = new EnemyDataManager();싱글톤은 다음과 같이 간단하게만 구현했다. 여기에 3개의 멤버 변수를 만들었다. MonsterDB: 모든 일반몬스터 정보를 ..
[P3-Team. TextRPG] 기획 & 마일스톤 이번 프로젝트는 저번주에 했던 개인프로젝트를 업그레이드 시켜 완전한 RPG로 만드는 것이 목표이다. 목   차  오전: 러프 스케치어떤 식으로 게임을 구성할지 개략적인 얘기를 나눴다. 발제와 GitHub강의 때문에 오전시간이 많이 허비되었었다.오후: 팀프로젝트 기획 Feat. Figma다음은 이번 프로젝트를 위해 피그마로 만든 Wire Frame과 UML Diagram이다. Wire FrameUML Diagram우선, 나는 처음에 피그마에서 피그잼이 아닌 Design으로 넘어가서 어떻게 다룰지 몰라 헤맸다.다음은 사용법이다:로그인 후, 팀을 만들고 팀원을 초대한다.그 팀과 만들 프로젝트를 만든 후, 더블클릭으로 들어간다.오른쪽 위의 FigJam board를 누르면 바로 페이지가 생긴다.왼쪽 위에 템플릿을..