Develop

아이템의 구현이 끝났다면, 이제 플레이어의 상호작용을 구현해야한다.일단, 이전에 작성했던, 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..
· Develop
컴퓨터를 부팅 시켰는데 갑자기 업데이트중이 뜬다. 그냥 업데이트중이구나 생각하고 업데이트를 완료한 후, 밀린 코딩을 하려고 소스트리를 실행했는데 스플래쉬 이미지만 뜨고 소스트리가 실행되지 않는다. 구글에 검색하니 다음의 정보를 알 수 있었다.윈도우가 업데이트되면서, 소스트리의 캐시파일이 손상되었을 수 있다 C:\Users\(사용자)\AppData\Local\Atlassian\SourceTree.exe_Url_fzgavuo5seq421damb4kmkodxeljesrl\(본인 소스트리 버전정보)여기 폴더에 들어가면 다음과 같은 파일이 있다. 여기서, Composition.cache 라는 파일을 지운 후, 소스트리를 재실행 해보자. 재실행하면 캐시파일이 다시 생성되며 소스트리가 켜진다. 위의 정보는 여기서 얻..
이전에 만들었던 인벤토리에서 이제 탭 기능을 추가해보자. 탭 기능을 추가하면 이제 얻은 아이템별로 구분하여 볼 수 있다. 이전에 만들었던 CropsBack은 스크롤 뷰로 만든 인벤토리 내부의 창이였다.이걸 반복해서 쓰기 위해 일단 Ctrl + D를 눌러 복제를 해주자. 이후, 버튼을 눌러서 수정해보자.버튼을 눌렀을 때 인스팩터창에 버튼에 대한 정보가 뜬다. 여기서 On Click에 메소드를 추가할건데, 따로 스크립트를 짜서 하는것보다 그냥 유니티에서 제공하는 기능을 쓰는게 편하다. On Click은 버튼을 눌렀을 때 어떠한 동작을 할건지 선택하는것이기 때문에 저 안에 다음과 같이 넣어주자.플러스 버튼을 누르면 하나씩 생성될텐데, Runtime Only 아래 빈곳에 아까 만들어둔 오브젝트를 하나씩 넣어주고..
인벤토리는 왠만한 게임들에 다 들어가는 작업이다. 일단 내가 원하는 인벤토리를 생각해보자.일단 이렇게 구성했다. 왼쪽 버튼은 탭 별로 나눌것이고, 누르면 그 위치에 맞는 창을 띄울 계획이다.창 안은 스크롤뷰로 생성해뒀다. 스크롤 뷰의 contents부분을 사용할것이기 때문이다.생성한 스크롤 뷰를 누르면 인스팩터창이 이렇게 된다.여기서 Scroll Rect -> Horizontal의 체크를 해제해주자. 우리는 가로로 스크롤 하는 인벤토리는 쓰지 않을 계획이다. 그리고 조금 더 설정을 해줘야한다.콘텐츠를 클릭해서 인스팩터창에 들어와 Content Size Fitter와 Grid Layout Group을 추가해주자.Content Size Fitter의 값은 Vertical Fit만 Preferred Size로..
이제 게임같이 움직이고, 플레이어에 따라 카메라가 이동하는것 까지 구현해놓고 나니, 그래도 뭔가 게임만들기의 시작이 된것같다. 그럼 이제 플레이어가 화면 밖으로 나가지 못하게 막아보자.이전 플레이어에 붙여뒀던 PlayerManager에 다음 코드를 추가한다.//PlayerManager void Update() { //플레이어 이동 //중략 //플레이어 움직임 제한 (범위 밖으로 나가지 못하게) Vector3 pos = Camera.main.WorldToViewportPoint(this.transform.position); if (pos.x 1f) pos.x = 1f; if (pos.y 1f) pos.y = 1f; ..
일단 이렇게 그렸다!플레이어가 맵을 돌아다녀야되니깐 이제 카메라 설정을 해보자! 예전엔 카메라를 구현할 때 하나하나 코드로 짜 넣어야됐다... 이게 은근 복잡하고 어렵다 보니 여기가 첫 관문인적도 많았다. 이번 카메라 구현은 유니티에서 제공하는 Cinemachine을 사용할것이다.일단 Cinemachine을 유니티에서 받아오자. 상단 탭에 Window -> PackageManager를 켜주자.좌측 위에 + q버튼 옆에 Packages를 UnityRegistry로 맞춰주고, 우측 상단에 Cinemachine을 검색해주자. 우측 하단의 Import버튼을 눌러 추가시켜주자.나는 이미 다운로드를 해서 Remove라고 뜨고 있지만, Import버튼을 눌러주면 된다. 이러면 이제 준비는 끝났다.하이라키창을 오른쪽클..
게임에는 여러 그림이 들어간다. 물론 어느 게임이든 BackGround는 무조건 들어간다.  지금은 RPG류의 게임이니깐 맵을 찍어보자!다행히 유니티에는 타일맵을 지원한다.타일맵은 찍는건 간단하지만, 준비하는 과정이 어려울 수 있다. 일단 게임에 필요한 스프라이트부터 가져와보자.나는 아래 링크에서 얻은 타일을 사용하려 한다. Forest TilemapA tilemap we created for our RPG project Rising Spire. We've replaced most of the assets already so feel free to use these in your projects!opengameart.org무료 스프라이트라 사용해도 괜찮을것이다. 이미지를 저장해두고, 이제 타일맵을 생성하..
LKM0222
'Develop' 카테고리의 글 목록 (3 Page)