2024/10 24

내일배움캠프 23일차 TIL - Input System 특강 정리 2

New Input System 을 통해 UI 의 버튼등에 상호작용할 수 있는 방법과, Input System의 세부 설정입니다. Standalone Input ModuleUI 를 생성하면, EventSystem 오브젝트가 생성되고 해당 오브젝트를 통해 UI가 작동하게됩니다.이때, Input Manager 를 설치하게 되면 이벤트 시스템의 입력 모듈 대체 여부가 발생합니다.Replace with InputSystemUIInputModule 버튼을 누르게 되면 아래와 같이 변경됩니다.이때, Action Asset에 Input System에서 기본으로 제공하는 액션 에셋이 지정되며, 에셋을 변경해서 개발자가 원하는 방식으로 UI를 조작할 수 있습니다. 기본 제공 액션 에셋을 이러합니다. Action Prope..

내일배움캠프 22일차 TIL - Input System 특강 정리

Input System 은 기존 Input Manager를 대체하는 시스템으로 사실상 기존 Input Manager 가 레거시 시스템이라고 볼 수 있습니다. 다이렉트 방식, 임베디드 방식, 액션 에셋 방식, C# 제너레이트 방식 4종류의 방법으로 사용할 수 있습니다. 입력을 받는 스크립트는 UnityEngine.InputSystem 을 사용해야 합니다.using UnityEngine;using UnityEngine.InputSystem;public class InputSystemTest : MonoBehaviour{ } 다이렉트 방식InputSystem 에서 지원하는 입력방식의 클래스를 변수로 선언하고, 변수를 통해 직접 입력받는 시스템 방식 입니다.이때, 클래스 변수에는 Keyboard.curre..

내일배움캠프 21일차 TIL - 객체지향 특별강의 정리

절차지향 - 코드간의 순서객체지향 - 객체간의 관계-> 비율의 차이일뿐, 절대적인것은 아님 Class - 문법Instance - 메모리에 할당된 객체/클래스Object - 단위, 개념 클래스 - 객체에 필요한 속성과 기능을 관리, 문법으로 표현 (붕어빵 틀)인스턴스 - 메모리에 할당된 클래스 (붕어빵)오브젝트 - 추상화된 개념 (단위) 객체는 기능을 제공한다 - 캡슐화이때, 기능을 담은 캡슐이 클래스 추상화 - 공통 분모로 묶을수 있는것을 클래스로 묶는 작업 상속을 통해서 다양한 클래스를 만든다 - 다형성 상속 - 나의 클래스로 관리가 불가능한 내용을 쪼개서 구현 자식클래스 - 부모 클래스를 상속받아 만들어진 클래스들파생클래스 - == 자식클래스 캡슐화, 추상화, 상속, 다형성 - 객체지향의 특징 4가지..

내일배움캠프 20일차 TIL - abstrack class, Interface 사용 구분

수준별 학습에서 abstrack 와 interface 의 사용 차이점에 대해 그림으로 구분해보고자 합니다. abstrack class 는 추상클래스로, 메서드를 선언하지만 그 내용을 구현하지 않는 상속을 위한 클래스 입니다.interface 는 추상클래스와 비슷하게 메서드의 이름을 선언하고 내용을 구현하지 않지만, 추상클래스와는 다른점이 있습니다. 먼저 가장 큰점은 abstrack class 는 클래스이기 때문에, 이 클래스를 부모 클래스로 가지는 클래스는 다른 클래스를 부모로 가질 수 없습니다(단일상속). interface의 경우, 한번에 여러개의 인터페이스를 상속받을 수 있으며, 추상클래스를 상속받은 상태에서도 인터페이스를 추가로 상속받을 수 있습니다. 이 두가지 기능을 사용할때는 주로 이러한 기준을..

내일배움캠프 19일차 TIL - New Input System : 1회만 입력받기

New Input System 으로 버튼 입력을 사용해보면 Press Only 에서는 누를때 true, Release Only 에서는 뗄때 falsePress And Release 에서는 누를때 true, 뗄때 false를 반환하는것을 볼 수 있습니다.//스페이스바 입력시 bool 값 매개변수로 받음public void OnInteracte(InputValue value){ InteracteInput(value.isPressed); Debug.Log(value.isPressed);} 이 경우, 변수나 프로퍼티를 통해 외부에서 입력을 인식할경우, 눌렀다 뗄때까지 입력이 연속으로 들어가는경우가 발생합니다.//입력받은 값을 변수로 전달public void InteracteInput(bool inte..

내일배움캠프 18일차 TIL - 개인프로젝트 스파르타타운 만들기 진행상황

개인프로젝트 - 스파르타 타운 만들기의 필수과제를 모두 제작하여 TIL로 진행상황을 올려봅니다. 먼저 폰트와 에셋은 저작권이 없는것으로 제작하였습니다.https://fonts.google.com/specimen/Jua?subset=korean&lang=ko_Kore Jua - Google FontsJua is a Korean and Latin fontfonts.google.comhttps://www.kenney.nl/assets/rpg-urban-pack RPG Urban Pack · KenneyDownload this package (480 assets) for free, CC0 licensed!www.kenney.nl캐릭터캐릭터는 타일맵에 포함되어있던 6종의 캐릭터를 활용하였으며, 각각 프리팹으로 만..

내일배움캠프 17일차 TIL - Atan2

개인적으로는 LookAt() 혹은 Euler 를 사용하여 타겟을 조준하는 방법만을 사용하였는데,Atan 아크탄젠트를 사용해본적은 없어서 정리해보고자 합니다. 먼저 Euler 를 사용하여 대상을 바라보도록 만들경우 이러한 과정을 거칩니다.//공격대상을 바라보도록 포탑 회전protected void LockOn(){ //바라볼 방향벡터 얻기 Vector3 dir = nowTarget.transform.position - transform.position; //Vector3 값을 Quaternion 값으로 변환 Quaternion lookRotation = Quaternion.LookRotation(dir); //포탑을 천천히 회전시키기(타겟이 보이자 마자 모션없이 바로 보는것을 방..

내일배움캠프 16일차 TIL - 2D 충돌감지

문제상황 2D 프로젝트중, Collider를 통해 벽을 만들고, 이동을 구현할경우 벽에 부딪치면 이러한 상황이 발생합니다. 시도해본것Character Contoller 컴포넌트를 사용하여 움직임을 구현할경우, 벽을 인식하지 못하는 상황이 발생합니다. private Move(){ characterContoller.Move(_input.move * moveSpeed * Time.deltaTime);}해결 방법레이캐스팅을 응용하여 벽을 감지하고, 벽이 감지되면 해당 방향의 벡터를 0으로 만들어 움직이지 않도록 추가로 구현할 필요가 있습니다.//이 오브젝트의 콜라이더private BoxCollider2D _collider;//감지된 콜라이더가 저장될 배열private RaycastHit2D[] wallHi..

유니티 기능 - Rule Tile

이전에 타일맵을 만들어주었습니다.그런데 타일을 종류에 따라 일일히 붙여주는것은 시간이 너무나도 오래걸립니다. 이 문제를 해결하기위해 Rule Tile 기능이 존재합니다.Rule Tile 기능은 규칙에 따라 타일을 자동으로 붙여주는기능입니다.하나의 타일에 여러가지 모양을 지정한 뒤, 타일이 어떻게 설치되었느냐에 따라서 설치되는 타일을 자동으로 바꿔줍니다. 먼저 폴더에서 우클릭후, Create - 2D - Tiles - Rule Tile 을 선택하여 룰 타일 오브젝트를 생성해줍니다. 룰 타일 오브젝트의 인스펙터창 입니다.Default Sprite에 이 타일을 대표할 이미지를 넣어준 뒤, Tiling Rules 에 이 타일이 가질 규칙을 만들어주면 됩니다. 24개의 규칙을 가진 풀밭을 당담하는 룰타일을 만들어..