Develop/마음대로 만드는 게임

이제 메인 시스템인 작물을 만들어 보자. 작물은 우리가 미리 만들어 둔 맵 중에 흙 타일에만 생성되게 해볼것이다. 그럼 일단 흙 타일을 감지하는 방법을 알아보자.일단, Ground를 Ctrl + D를 눌러 객체 하나를 복사해주자.그리고 복사된 객체를 비활성화 처리 해주었다. (두개 같은거라 헷갈리기 때문이다.) 그리고 원래 Ground를 눌러서 원래 있던 흙 타일을 풀 타일로 교체해주자.이렇게 해두고, 비활성화 한 다음, 복사해둔 객체를 다시 활성화 시키면 이렇게 된다. 원래 있던 흙 타일이 생긴걸 알 수 있다.이전에 원본은 비활성화 해뒀으니, 이 Ground복사본에서는 풀 타일을 전부 지워주자. (헷갈린다면 그릴 타일맵만 따로 활성화해두고 그리면 편하다.)이렇게 흙만 남겨두고 다 지워주자. 그리고 백그..
슬롯을 만들다 보니 뭔가 이상한점을 발견했다.이렇게 툴팁이 가려진다... Canvas의 하위 객체들은 전체가 Canvas의 정렬 기준을 따른다. Canvas의 Sorting Layer를 수정하면 하위 객체 전체의 정렬기준이 설정되기 때문이다. 그래서 다른 방법을 고안해냈는데 다음과 같이 수정해주자. 일단 아이템 슬롯에서 툴팁을 제거해주자. 이렇게 툴팁을 바깥으로 빼주었다. 이전 설정은 전부 같다. 그리고 슬롯의 SlotManager 스크립트를 보면, 이전에 툴팁을 띄울때는 넣어서 해결해줬지만, 이번에는 프리팹을 생성할때, 오브젝트를 검색해서 자동으로 넣어줄 수 있도록 해볼것이다.public class SlotManager : MonoBehaviour{ //중략, 변수들을 선언한 부분이다. [S..
이전에 슬롯을 수정해 이제 아이템을 먹으면 아이템이 인벤토리에 추가되는것까지 완료했다.아이템의 수량과, 아이템의 설명이 정확히 나타났으면 좋겠는데 일단 내가 구현하고싶은건 다음과 같다.아이템에 마우스를 올리면 툴팁이 뜨는건 어떤가? 이 기능은 유니티에서 제공하는 마우스에 관련된 함수를 사용하면 구현 할 수 있을것 같다. 일단 구현하기에 앞서 SlotManager이라는 스크립트를 하나 생성해주자.스크립트를 생성해주고, slot프리팹을 클릭해 프리팹 편집화면으로 넘어가, 슬롯에 SlotManager를 붙여주자.이런식으로 간단하게 붙여주면 된다. 주의할점은 최 상단의 Slot 객체에 붙여야한다는점이다. (하위 오브젝트에 붙이지 말자...)그리고 Box Collider 2D도 함께 붙여주자. 사이즈는 가로 세로..
이전엔 슬롯을 오브젝트풀로 생성하고, 아이템을 습득했을 때, 인벤토리에 아이템이 추가되는것까지 완료하였다. 하지만, 인벤토리에 아이템이 추가되면 다음과 같이 뜬다.아이템이 뭔가 안예쁘게 정리되는 감이 있다... ㅠㅠ일단 슬롯간 구분을 위해 아이템 슬롯부터 좀 꾸며보자. 이전에 설명했던대로, 만들었던 프리팹을 더블클릭해서 프리펩 편집화면으로 들어오자.이제 이걸 꾸며줄건데, 간단하게 도트를 찍어서 꾸미자.나도 도트에 대해선 미적 감각이 부족하지만, 스팀의 Aseprite를 사용해 찍을것이다.(스팀에서 할인할때 하나 구비해두자. 꽤 쓸모가 많다.) Aseprite on SteamAseprite is a pixel-art tool to create 2D animations, sprites, and any kin..
이전에 아이템을 습득하고, 그 아이템이 인벤토리로 들어가는 과정까지 코딩했다.그럼 이제 플레이어가 인벤토리에서 아이템을 볼 수 있도록 하는 기능을 추가해보자. 일단 PlayerManager에 다음과 같이 코드를 추가하자. //중략 [SerializeField] GameObject inventoryUI; void Update() { //중략 if(Input.GetKeyDown(KeyCode.I)){ OpenInventory(); } } //인벤토리 여는 함수 추가 void OpenInventory(){ if(inventoryUI.activeSelf){ inventoryUI.Set..
아이템의 구현이 끝났다면, 이제 플레이어의 상호작용을 구현해야한다.일단, 이전에 작성했던, PlayerManager를 열어보자.이전에 우리가 코딩한건 Update 안에 코딩을 했었다. 이번엔 Update함수 바로 아래에 다음과 같이 코딩을 해주자.//위는 Update문이다private void OnTriggerStay2D(Collider2D other) { if(other.tag == "Item"){ if(Input.GetKeyDown(KeyCode.Space)){ print(other.name); } }}OnTriggerStay2D함수를 사용했다. 함수에 대해 잠깐 설명하자면유니티에서는 입력을 받거나, 콜라이더, 트리거 같은 함수에는 종류가 있다.모두 다 충돌했을때, 충돌중일때, 충돌이 끝났을때..
기본적인 아이템의 틀은 저번 시간에 만들었으니, 이번엔 바닥에 떨어져있는 아이템을 습득하는 기능을 추가해보자. 우리가 저번에 만든 플레이어에는 Rigidbody2D가 설정되어있다. 일단, 아이템과 플레이어는 서로 충돌한다는 개념이 필요하다.유니티에서는 충돌이라는 개념이 총 두개 있다.하나는 벽과 같은 충돌, 하나는 겹쳐지는 충돌이다.둘 다 모두 Collider2D가 관여한다.충돌을 하기 위해선 충돌하는 두 객체에 모두 콜라이더가 있어야 하고, 둘 중 하나에 Rigidbody2D가 붙어있어야 한다.우리는 플레이어에 Rigidbody2D를 붙여뒀기 때문에 아이템에는 따로 붙여줄 필요가 없을것 같다.그럼 이제 플레이어와 아이템 두 객체에 각각 BoxCollider2D를 붙여주자.이렇게 일단 플레이어에 Box ..
이제 아이템에 대해서 이미지를 받아와보자. 무료 다운로드 | 그래픽 픽셀 아트 일러스트, 당근, 게임, 주황색 png | PNGEgg그래픽 픽셀 아트 일러스트, 당근, 게임, 주황색 png 나는 사람이다 다운로드가 곧 시작됩니다...www.pngegg.com여기에서 당근 이미지를 받아와 프로젝트 폴더에 넣은 후, 이전에 만들었던 오브젝트에 당근이미지를 넣어줬다.일단 이전에 만들던 오브젝트를 선택해 Sorting Layer에 Add Sorting Layer를 눌러 Item을 다음과 같이 추가해주자.플러스 버튼을 눌러 Item이라고 입력해준 후, 왼쪽 = 표시를 클릭해 위로 올려줘야한다.Sorting Layer는 위에서부터 차례대로 아래로 깔리는 순서이다.위의 레이어 단계를 보면, BackGround 위에 ..
플레이어가 아이템을 획득하면 인벤토리로 넣을거다. 일단 아이템을 구현하려면 아이템의 특성을 설계를 해둬야하는데 나는 다음과 같이 설계했다.아이템의 정보 - 이름, 아이템 코드, 어떤 종류인지, 가격, 설명아이템의 이미지이렇게 두가지를 생각해두고 아이템 구현을 해보자.일단, 아이템의 이미지를 넣어줄, 2D Object 를 만들어줬다.이걸 다 만든 후, Prefab으로 만들어 줘서 아이템으로 사용할 예정이다. 이 오브젝트에 넣어 줄 스크립트를 하나 짜보자. 스크립트는 아이템의 클래스를 정의한 클래스 하나, 아이템을 만들어줄 오브젝트에 붙일 수 있는 오브젝트 하나 이렇게 만들었다.코드가 좀 긴거같아서 접는 글에 올리겠다.더보기Item.csusing System.Collections;using System.Co..
이전에 만들었던 인벤토리에서 이제 탭 기능을 추가해보자. 탭 기능을 추가하면 이제 얻은 아이템별로 구분하여 볼 수 있다. 이전에 만들었던 CropsBack은 스크롤 뷰로 만든 인벤토리 내부의 창이였다.이걸 반복해서 쓰기 위해 일단 Ctrl + D를 눌러 복제를 해주자. 이후, 버튼을 눌러서 수정해보자.버튼을 눌렀을 때 인스팩터창에 버튼에 대한 정보가 뜬다. 여기서 On Click에 메소드를 추가할건데, 따로 스크립트를 짜서 하는것보다 그냥 유니티에서 제공하는 기능을 쓰는게 편하다. On Click은 버튼을 눌렀을 때 어떠한 동작을 할건지 선택하는것이기 때문에 저 안에 다음과 같이 넣어주자.플러스 버튼을 누르면 하나씩 생성될텐데, Runtime Only 아래 빈곳에 아까 만들어둔 오브젝트를 하나씩 넣어주고..
LKM0222
'Develop/마음대로 만드는 게임' 카테고리의 글 목록