직소퍼즐 구현하기 제 2편입니다. 지난 포스팅에서 조각을 마우스 드래그를 통해 움직이고 기준위치에 놓을 때 딱 들어맞도록 스냅하는 기능을 구현해보았습니다. 이번에는 N개의 퍼즐조각을 모두 올바른 위치에 놓았을때 퍼즐이 클리어 되도록 구현하는 방법을 알아보겠습니다. 1.퍼즐 전체 오브젝트 계층구조 구현 먼저 에디터에서 퍼즐에 필요한 오브젝트들을 씬에 배치하여 계층 구조를 설정하겠습니다. 오브젝트들을 다음과 같이 배치합니다. PuzzlePieceN은 N번째 퍼즐조각입니다. PuzzlePosN은 N번째 퍼즐조각이 와야할 기준위치입니다. 그리고 전체 퍼즐을 관리할 스크립트 하나를 생성하고 퍼즐의 루트 오브젝트(JigsawPuzzle)에 컴포넌트로 추가합니다. 생성한 스크립트에서 퍼즐조각과 퍼즐위치를 참조하기 위..
유니티에서 조각난 그림조각들을 올바른 위치에 배치하여 그림을 완성시키는 직소퍼즐 구현방법에 대해 알아보겠습니다. 기본적으로 마우스 드래그를 통해 퍼즐조각을 움직여 퍼즐을 완성할 수 있도록 구현하겠습니다. 유니티 버전은 19.4.5f1을 사용하였으며 코드를 그대로 사용할 시 오류가 발생할 수 있으므로 코드 전체를 그대로 사용하시는거 보다 논리적인 로직을 이해하시고 직접 코딩하여 구현해보시는것을 추천드립니다. 이번 포스팅에서는 우선 마우스 드래그를 통해 UI(퍼즐조각)을 조작하는 방법에 대해 설명합니다. 1.컴포넌트 클래스 생성 각 퍼즐 조각에 추가할 컴포넌트 클래스를 생성합니다. -스크립트 최상단에 UnityEngine.EventSystems 네임스페이스를 사용하세요. -해당 클래스가 IDragHandle..
오늘은 3D 오브젝트를 화면 중앙에 위치시키고 UI처럼 사용하는 방법에 대해 알아보겠습니다. 콘솔게임으로 잠입이나 방탈출 같은 게임을 하다보면 특정 오브젝트와 상호작용했을 때 해당 오브젝트가 화면 가운데에 오고 마우스로 이리저리 돌리면서 오브젝트를 관찰하여 단서를 얻는 장면들을 보신적이 있을겁니다. 그럼 기존 카메라로 게임화면을 렌더링 하면서 가운데에 중첩해서 3d오브젝트를 렌더링 해야 합니다. 여기서 무식하게 카메라의 위치를 기준으로 ScreenToWorld함수 등으로 위치 시키면 어색하고 이상하게 오브젝트가 생성되죠. 이 문제를 해결하기 위해 유니티의 렌더 텍스쳐(Render Texture)기능을 사용합니다. 1. 먼저 에셋폴더에 새 Render Texture를 생성합니다. 2. 그리고 화면 중앙에 ..
이번 시간에는 UI가 생기면서 배경 게임화면은 흐려지게 할 때 쓰이는 블러효과를 적용시키는 방법을 알아보겠습니다. 보통 블러효과를 적용시키는 법에 대해 검색을 해보면 쉐이더를 사용하여 스크립트를 해야하는 내용들이 많고 초심자가 봤을때 상당히 어려워 보입니다. 그래서 저는 유니티에 내장된 기능들을 활용하여 클릭만으로 블러효과를 적용시키는법을 알아보겠습니다. 유니티는 원래 스탠다드 에셋이라는 것을 지원했습니다. 그리고 오늘 할 내용은 원래 이 스탠다드 에셋의 이미지 이펙트라는 것에 있었지만 최신버전에서는 스탠다드 에셋과 호환성 문제가 있습니다. 그러면 원래 있던 이 기능이 어디로 갔냐 하면 유니티의 기능중 포스트 프로세싱 이라는 곳에 이미지 이펙트 에셋 기능들이 옮겨졌습니다. 서론이 길었네요. 그럼 포스트 ..
유니티에서는 JsonUtility를 활용해 시리얼라이즈와 디시리얼라이즈 하는 기능을 제공하고 있습니다. 1차원의 자료형까지는 모두 코드몇줄만 가지고 시리얼라이즈하여 서버와 클라이언트가 통신할 수 있죠. 예를들어 리스트, 벡터, 1차원배열 같은 자료형은 모두 Json으로 만들 수 있습니다. 하지만 서버와 통신하는 게임을 개발하다보면 서버와 클라이언트간의 2차원배열 이상의 데이터를 주고받아야 하는 경우가 있습니다. 예를들어 게임 필드의 지형 정보를 2차원 배열로 표현하여 플레이어간의 주고받을 수 있도록 통신하는 기능을 구현하고 싶다면 클라이언트에서 2차원배열을 보내고 서버가 브로드캐스트하여 다른클라이언트가 2차원배열 정보를 받을 수 있어야하죠. 하지만 이차원 배열은 JsonUtility의 ToJson()으로..
안녕하세요 이번에는 C#의 라이브러리 DateTIme클래스를 활용방법에 대해 알아보겠습니다. 모바일 게임을 개발할 때 흔히 시간에 따라 게임내의 재화를 지급하는 기능을 많이 씁니다. 예를 들면, 어느 특정 컨텐츠의 입장권이라던가 게임 플레이 자체의 입장권등을 일정시간마다 하나씩 지급하는 경우가 되겠습니다. 이 기능 구현을 위해 거쳐야할 순서로는 유저의 마지막 접속시간 가져오기 -> 현재시간 가져오기 -> 시간차이 계산 -> 시간차이를 지급시간으로 나누어 지급 첫번째로 유저의 마지막 접속시간을 가져와야합니다. DB를 운영하신다면 유저테이블에 적당한 컬럼을, DB를 운영하지 않으신다면 앱 내부에 데이터를 추가하여 유저의 마지막 접속시간을 기록할 장소를 만듭니다. 그럼 접속시간을 기록하는 시기는 보통 접속을 ..
올해 구글 플레이스토어 에서는 타겟팅 API 레벨을 29로 하지 않은 앱은 업데이트도 되지 않는다는 정책변경을 발표했습니다. 이에 맞춰서 대부분의 경우 자동으로 타겟 API 레벨을 설정하여도 유니티 버전 향상에 따라 29에 맞춰서 되실수도 있지만 간혹 레벨 28로 맞춰져 수동적으로 29레벨을 설정해줘야 하는 경우가 생깁니다.(그게 접니다... 하하하) 보통 유니티 허브를 통해서 유니티 버전을 까는 과정에 안드로이드 빌드를 위한 모듈을 추가적으로 설치할 수 있습니다. 그러면 여기에 SDK 레벨 29가 설치가 되죠. 하지만 이상하게도 저는 레벨28이 설치가 되었습니다. 유니티 공식 포럼에서 유니티 기술자의 답변을 봐도 2019.x버전부터는 안드로이드 레벨 29를 지원한다고 언급하였으며 구글링 꽤 많은 곳을 ..
현재 구글 플레이스토어에서는 64비트만을 취급하는 앱이 아니면 스토어에 게시할 수 없게 정책이 변경되어있습니다. 따라서 유니티에서 기존의 설정대로 빌드하시면 플레이 스토어에 APK를 게시할 때 오류가 발생하면서 게시할 수 없게됩니다. 이러한 정책에 맞춰서 유니티에서 알맞는 빌드 설정을 해주셔야 합니다. 변경 방법은 아주 간단합니다. FIle->BuildSettings->Player Settings로 들어갑니다. 다음 Other Settings탭을 선택합니다. 그럼 중간쯤에 Configuration이라는 항목이 보일텐데요. 여기서 기본설정으로 Scripting Backend로 Mono라고 되어 있을겁니다. 이것을 IL2CPP로 변경해줍니다. 그러면 몇줄 아래에 Target Architectures에 ARM..
- Total
- Today
- Yesterday
- 안드로이드
- C++
- Unreal Header Tool
- Jenkins
- 알고리즘
- c언어강의
- 백준
- 깃 허브 오류 해결
- 젠킨스 에이전트 연결
- dfs
- 언리얼 사용자 정의 구조체
- 유니티 직소퍼즐 구현
- 언리얼
- Jenkins Build Periodically
- C언어기초
- Connecting Jenkins
- Connecting Jenkins Agent
- 언리얼 기초
- 언리얼 빌드
- 안드로이드 구글맵
- 깃 용량문제
- 빌드 주기
- 구글맵
- c언어 기초
- 알고리즘기초
- UHT
- 유니티
- Add Node
- 젠킨스
- refusing to run with root privileges
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |