본문 바로가기

게임16

Joystick으로 8방향 이동과 Blend Tree Animation 구현 목표 1. Joystick으로 Player가 움직일 Vector2 만들기 2. Joystick의 Vector2를 이용하여 8방향 이동과 Blend Tree로 Animation 구현 1. Joystick Joystick은 구현을 해보았기에 구현에 어려움은 없었다. 중요한 건 Joystick으로 만든 Vector2의 범위를 -1 ~ 1 로 만드는 것. 이유는 Blend Tree에서 Horizontal 과 Vertical 로 사용하기 때문. (Horizontal과 Vertical도 -1 ~ 1) 임시 그림으로 Joystick을 그려서 나중에 제대로 그릴 때 크기가 바뀔 수 있으니, 바뀌는 크기에 대해 대응하도록 구현해야했음. 2. Blend Tree Blend Tree 로 8방향 Animation과 Idle을.. 2021. 3. 2.
3D에서 2D Sprite Depth 처리 1. 문제점 이 게임은 3D World에서 2D처럼 보이는 View를 가진다. 그런데 위와 같이 캐릭터가 움직이면 카메라가 갑자기 못 그려주게 되었다. 모든 2D Sprite가 마찬가지였다. 2. 원인 Unity는 기본적으로 렌더링할 때, Sprite 단위로 렌더링을 한다. 즉, Camera와 Sprite의 거리를 측정해서, 가까운 Sprite를 앞에 그려준다는 것이다. 나한테 생긴 문제에 적용시켜보면 Camera와 Ground의 거리 와 Camera와 Player의 거리를 비교하여, 거리가 짧은 Sprite를 그려주는 것이다. 그래서 정확히는 Camera와 Ground가 Camera와 Player의 거리보다 가까워질 때, Player가 Ground의 뒤에 보여지는 것이다. (결국 Ground가 커서 P.. 2021. 3. 1.
도트 그림 모음 Pixel Art 2020. 3. 3.
[Unity 이론] Admob 연동 Admob 연동 광고에는 여러가지 종류가 있는데, 이 글에서 알아볼 것은 두가지입니다. 1. 배너 광고 2. 리워드 광고 0. Admob 기본 세팅 일단 유니티에 Admob 플러그인을 Import 하겠습니다. Github에서 최신버전의 Admob 플러그인을 다운받아줍니다. https://github.com/googleads/googleads-mobile-plugins/releases/latest 그리고 이 패키지를 유니티로 Import 해줍니다. (2020.02.27 기준 최신 버전 4.2.1) (참고!) Google Play Services 플러그인과 같이 사용하신다면, Admob 플러그인을 마지막에 Import 하시는 걸 추천합니다. 오류 가능성 때문... 그리고, Admob 계정이 있어야 하기에, .. 2020. 2. 29.
[Unity 이론] Google + Firebase 로그인 Google + Firebase 로그인 Firebase에서 Google 회원가입 및 로그인을 하는 방법을 알아보겠습니다. Google Play Services와 Firebase를 연동시킨다고 생각하면 되겠습니다. 이번 글에서 할 것은 1. GooglePlayGamesPlugin 패키지 Import하기 => GooglePlayGames의 Services를 이용할 수 있습니다. 2. Unity에서 keystore 생성하고, SHA-1 인증서 지문 얻기 => Firebase같은 API제공업체에선 SHA-1 인증서 지문을 요청하고, 앱을 제공업체에 등록할 때 사용합니다. 3. Google Play Console에서 게임 등록하고, 게임 서비스 추가하고, OAuth 클라이언트 ID 얻기 => Google Play.. 2020. 2. 27.
[Unity 2D] Indicator 오늘은 화면 밖에 있는 아이템, 적을 표시하는 화살표(Indicator)를 그려보겠습니다. Indicator 캐릭터가 상하좌우로 움직이면 화면에 있던 다른 오브젝트(적, 아이템 등)가 화면을 벗어납니다. 화면을 벗어난 오브젝트들을 표시해 주는 것이 바로 Indicator입니다. 0. 기본 셋팅 Main Camera를 Player의 자식으로 넣어주고 Player에게 Rigidbody2D를 추가하고 Gravity Scale을 0으로 만들어주고 Indicator Canvas의 Render Mode를 Screen Space - Camera로 바꾸고 Main Camera를 넣어줍니다. 그리고 Indicator 오브젝트는 Prefab으로 만들어 줍니다. 1. Indicator 지금부터 작성할 Indicator의 동.. 2020. 2. 17.
[Unity 2D] 조이스틱을 이용한 부드러운 캐릭터 이동 조이스틱을 이용한 부드러운 캐릭터 이동 오늘은 조이스틱 조종을 통해 캐릭터가 부드럽게 회전하며 이동하는 것을 구현하도록 하겠습니다. 오늘 할 것은, 아래의 조이스틱 패드를 조종(터치 및 드래그)하여 캐릭터를 움직이는 것입니다. 제가 선택한 네모난 영역이 사용자가 터치할 영역이고, Inner Pad(안쪽 검은 원)는 사용자가 터치한 곳으로 움직일 것인데, Outer Pad(바깥 원)의 선까지만 움직이게 구현할 것입니다. 이와 동시에 조이스틱 방향으로 캐릭터가 부드럽게 회전하며 이동할 것입니다. 0. 기본 셋팅 화면비율은 9:16으로 해주었고, Character는 Sprite로, Rigidbody 2D를 추가하고 Gravity Scale을 0을 줍니다. Joystick Touch Area는 Image로, 알.. 2020. 2. 13.
[Unity 이론] Firebase Auth 회원가입 및 로그인 Firebase Auth 회원가입 및 로그인 만약 게임에서 계정이 없어 게임종료 후 데이터가 날라가면 할 맛이 뚝 떨어질 것입니다. 나만의 계정을 만들어 게임점수를 쌓아가야 할 맛이 날 것입니다. 오늘은 Firebase Authentication 시스템을 이용한 회원가입 및 로그인을 구현하겠습니다. 0. 기본셋팅 우선, "Firebase Database 연동" 글에서 다운로드 받았던 Firebase Unity SDK가 있어야 합니다. 다운로드 받았던 폴더를 열고 FirebaseAuth Package를 Unity로 Import해줍니다. 그리고 Firebase에서 Authentication탭에 들어갑니다. 사용자가 어떤 방식으로 로그인을 설정할 지 정하기 위해 "로그인 방법 설정"에 들어갑니다. 또는 위쪽에.. 2019. 12. 8.
[Unity 이론] Firebase Database 데이터 사용 Firebase Database 데이터 사용 저번 글에서 Firebase Database를 연동했으니 이제 Database에 존재하는 데이터를 사용해보도록 하겠습니다. 1. 데이터 입력 지난 글에서 입력했던 데이터베이스를 토대로 시작하겠습니다. 이 데이터베이스에서 추가로 "나일등"의 점수와 시간을 입력하도록 하겠습니다. 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 using System.Collections; using System.Collections.Generic; using UnityEngine; usin.. 2019. 11. 28.
[Unity 이론] Firebase Database 연동 저번 글과 이어서 Unity에서 Database를 활용하는 방법에 대해서 공부하겠습니다. Firebase Database 연동 Google에서 서비스하는 Firebase를 활용하겠습니다. Firebase에는 데이터베이스, 사용자 관리, 인앱결제 등 게임에서 필요한 다양한 기능들을 지원해 줍니다. 물론 무료입니다. (유료 버전도 있습니다) 우선, Unity 전용 Firebase Library가 필요합니다. Firebase Unity SDK를 설치하겠습니다. (SDK: Software Development Kit. 소프트웨어 도우미) 이곳에서 다운받을 수 있습니다. Firebase Unity SDK 다운로드 다운로드를 받아줍니다. 폴더를 열어보시면 dotnet3와 dotnet4가 있습니다. Unity 버전에.. 2019. 11. 28.
[Unity 이론] Firebase Database 오늘은 Unity 외, 게임제작에 필요한 시스템을 공부하겠습니다. Firebase Database Firebase는 구글에서 지원하는 서비스입니다. 클라우드 저장소, 머신러닝, 사용자 인증, 데이터베이스 등등 유용한 기능들을 제공합니다. 이 서비스를 이용하면 별도로 서버 컴퓨터를 가질 필요도 없고, 공인 IP 주소를 구매할 필요도 없고, 통신량이 많지 않다면 무료로 서비스 받을 수 있어서 모바일 게임에서 정말 많이 선택되는 도구 중 하나입니다. 그러면 오늘은 Firebase에서 Database를 간단하게 만들어보겠습니다. 우선, Firebase 홈페이지에 들어가겠습니다. 프로젝트 추가를 클릭해줍니다. 프로젝트 이름을 정해줍니다. 2단계 다음 - 3단계 Default Server를 택하고 다음 프로젝트가 .. 2019. 11. 28.
[Unity 이론] Object Pooling 오늘은 게임을 효율적으로 구현할 수 있는 방법에 대해 공부하겠습니다. Object Pooling 1. Object Pooling이란? 게임에서는 엄청나게 다양하고 많은 오브젝트를이 쓰입니다. 만약 이런 오브젝트들을 생성파괴생성파괴생성파괴... 한다면 CPU성능이 나빠질 것입니다. 오브젝트를 생성할 때마다 메모리에 데이터를 할당하고, 파괴될 때마다 메모리에 데이터를 할당 해제합니다. 할당과 해제는 CPU가 담당하기 때문에 CPU 성능이 나빠질 수 밖에 없습니다. 그리고 C#에는 가비지 컬렉터가 있어 메모리에서 사용되지 않는 데이터를 할당 해제하는데, 가비지 컬렉터는 CPU가 작동시킵니다. 그럼 가비지 컬렉터가 자주 발생하면? CPU에 부담이 가게 됩니다. 이러한 점을 보완하기 위해 등장한 것이 "Objec.. 2019. 11. 26.
[Unity 이론] Coroutine Coroutine 오늘은 게임을 좀 더 효율적으로 동작할 수 있게 하는 "코루틴 (Coroutine)"에 대해 공부하겠습니다. 1. Coroutine이란? Co (with) + routine (루틴) 이 합쳐진 말로, 협동루틴이라고 부를 수 있습니다. 코루틴을 사용하면 다음과 같은 특성을 가질 수 있습니다. - 다른 연산이 완료될 때까지 대기 가능 - 시간의 흐름에 따른 처리 가능 - 루틴을 병행하여 실행 가능 2. Coroutine의 사용 위의 특성을 근거로, Unity에서 다음과 같은 상황에 사용하면 좋습니다. - 특정 프레임이 아닌, 특정 시간을 대기해야 할 때 (Invoke도 있으나, 나중에 다뤄봅시다) 만약 코루틴을 사용하지 않는다면 어떤일이 있을까요?? 아래 코드를 살펴봅시다. 1 2 3 4 .. 2019. 11. 26.
[Unity 3D] 충돌 체크 오늘도 게임의 기초 중에 기초를 공부하겠습니다. 충돌 체크 게임에서 총알이 적에게 맞는다던가, 캐릭터가 목적지에 도달하던가 등등 충돌은 중요한 요소입니다. 이런 충돌을 유니티에서는 어떻게 구현해야 할 지 알아봅시다. Unity에서는 Object가 실제로 충돌을 감지하는 것이 아닌, Collider라는 Component가 감지하게 됩니다. Cube가 실제로 충돌을 감지하는 범위가 초록박스 영역인 Collider입니다. 이미지에선 Collider의 Size를 조금 늘린 것입니다. Collider는 각 모형마다 존재하며 필요에 따라 제거할수도 있습니다. 그리고 Box Collider에 "Is Trigger"라는 것이 존재하는데, 만약 체크하면 물리적인 구현을 쏙 빼고 충돌만을 감지하게 됩니다. 유니티에서는 충.. 2019. 11. 25.
[Unity 이론] Time.deltaTime 대부분 게임을 하면서 FPS라는 단어를 들어보았을 겁니다. Frames Per Second의 약자인데 "초당 프레임 수"라는 의미를 가지고 있습니다. 이 글에선 이 FPS가 게임에 영향을 어떻게 미치고, 유니티로 어떻게 극복하는지에 대해 알아보겠습니다. Time.deltaTime 1. Time.deltaTime이란? Time.deltaTime은 "한 프레임 당 실행하는 시간"을 뜻하는데, 값을 float형태로 반환합니다. 단위는 초를 사용합니다. 2. Time.deltaTime의 원리 유니티의 Update함수는 매 프레임마다 호출하여 해당 코드를 실행하게 됩니다. 예를 들어 캐릭터의 이동을 Update함수에 구현했다고 가정해봅니다. 그렇다면 성능이 좋은 컴퓨터와 나쁜 컴퓨터에선 어떤 차이가 일어나게 될까.. 2019. 11. 24.