분류 전체보기 143

내일배움캠프 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개의 규칙을 가진 풀밭을 당담하는 룰타일을 만들어..

유니티 기능 - 타일맵

2D 프로젝트 진행전, 2D 게임을 만들때 자주 사용되는 타일맵에 대해서 정리해보자 합니다.먼저, 기본 타일이 될 이미지가 필요합니다.저는 kenney 에서 무료 에셋을 받아서 사용할 예정입니다.https://www.kenney.nl/assets/rpg-urban-pack RPG Urban Pack · KenneyDownload this package (480 assets) for free, CC0 licensed!www.kenney.nl※해당 에셋은 저작권이 없는 에셋입니다 받아준 이미지의 Sprite Mode를 Multiple로 변경해줍니다. Sprite Editor를 열어서 이미지를 나누어줍니다.Slice 를 선택한 후, 이미지를 칸갯수로 나누는 Grid By Cell Count 옵션을 사용하거나 ..

내일배움캠프 15일차 TIL - 얕은 복사, 깊은 복사

팀 프로젝트 발표후, 실수한 부분을 눈치채고 기록합니다.  상점에서 아이템을 구매하면 인벤토리 클래스에서 AddItem 함수를 호출하고, 상점 아이템의 정보를 넘겨줍니다. 인벤토리에서는 아이템 정보를 받고, 받아준 아이템을 인벤토리 배열에 추가하게 됩니다. 이 경우, 문제가 하나 발생하게되는데, 인벤토리에 들어오는 아이템이 기존 생성되있던 아이템 클래스 객체를 참조한다는것 입니다. 상점의 아이템 정보는 아이템 데이터베이스 클래스에서 생성된 객체를 참조하고, 상점은 이 객체를 참조하여 자신의 판매 아이템 리스트에 저장하게 됩니다.상점에서는 아이템의 기본 정보를 보여주는 역할을 하기 때문에 큰 문제가 없지만, 플레이어가 상점에서 아이템을 구매하면 문제가 발생합니다. 플레이어가 아이템을 구매하고 플레이어 인벤..

내일배움캠프 14일차 TIL - 마크다운(Mark Down) 문법

팀프로젝트를 진행하면서 필연적으로 깃허브의 readme 를 적게되는데 , 이 readme 를 마크다운 문법으로 적게되니다. 따라서 앞으로의 작업에서도 이 내용이 사용되기 때문에 따로 정리해보았습니다. 제목 만들기제목을 만들때는 적어줄 제목 앞에 #을 붙여서 만들어줍니다.주의사항은 # 다음 띄어쓰기를 해주어야 제목으로 인식합니다. 좌측과 같이 입력하면 우측 형태로 결과가 나타납니다.#의 갯수에 따라 크기가 조절되며, 6단계까지 조절됩니다.7번째부터는 제목으로 인식하지 않고 일반적인 텍스트로 인식하는것을 볼 수 있습니다. 줄바꾸기줄을 바꿀때에는 한 라인을 비워주어야 합니다.라인을 비우지 않으면 띄어쓰기로 인식합니다. 구분선구분선은 - 혹은 * 을 사용하여 만들어 줄 수 있습니다.이때 - 는 하나만 사용해도 ..

내일배움캠프 13일차 TIL - C# 이벤트

문제상황텍스트 RPG의 내용으로써 아이템을 장착하면 Inventory 클래스의 playerEquip 배열의 알맞은 위치에 아이템 클래스를 입력하고, 플레이어의 스텟을 장착한 아이템에 맞게 변화를 주려고 했습니다. 아이템을 장착하는 함수는 Inventory 클래스에 있는 상태이며 아이템을 장착할 때, 스텟을 업데이트하는 함수를 호출할 방법이 필요했습니다.//Character 클래스//장비에 따른 스테이터스 업데이트public void UpdateStatus(){ //무기 장착에 따른 공격력 변화 if (playerInven.PlayerEquip[0] != null) { ItemWeapon equipedWeapon = (ItemWeapon)playerInven.PlayerEqui..

내일배움캠프 12일차 TIL - 속성(프로퍼티)

프로퍼티라고도 불리는 C#의 속성을 개인적으로 어떻게 사용하는지 정리해보고자 합니다. 속성의 사용이유속성은 한 클래스의 필드의 변수를 외부 클래스에서 다루고 싶을때 사용하게 되는 클래스 멤버입니다.필드의 변수 자체를 public 을 사용하여 외부 클래스에서 사용할경우 객체 지향 프로그래밍의 특징중 하나인 캡슐화에 위배되며, 외부에서의 접근으로부터 데이터를 숨길 수 없게됩니다. 속성은 클래스의 변수를 숨기면서 자신의 필드를 접근자를 통해 공개하여 객체 지향 프로그래밍의 캡슐화 특성을 지키는 역할을 합니다.  접근자속성의 접근자는 get, set이 존재하며, get을 통해 필드의 값을 참조할 수 있고, set 을 통해 내용을 설정할 수 있습니다.접근자는 둘 다 사용하거나 둘중 하나만 사용하는것도 가능합니다...