분류 전체보기 56

Unity - Animation (2)

지난 글에 이어 이번엔 외부 Asset을 가져와 유니티에서 적용하고 캐릭터가 조건에 따라 해당 애니메이션을 재생하도록 구현해보겠습니다. 참고로 인간형 모델 기준입니다. Unity Asset Store에 들어가 원하는 캐릭터와 애니메이션 파일을 본인 Unity 계정에 추가하여 프로젝트에 추가합니다. 아래의 방법으로 프로젝트에 추가합니다.Project창에 추가한 Asset 폴더가 표시될 겁니다. 이후, 사용할 캐릭터 오브젝트를 Hirearchy창에 옮겨 추가해줍니다. 그리고 만약 해당 캐릭터를 Asset 폴더가 아닌 자신만의 오브젝트로 기능하고 싶다면 Prefabs 폴더 만들고 거기 넣으시면 됩니다. 그럼 이 캐릭터 오브젝트를 기존 Asset대로 사용할 것인지, 아니면 아예 새롭게 사용할 것인지 묻는 대화창..

Unity - Animation (1)

이번엔 Unity엔진에서 Animation에 대해 알아보는 시간을 가져보겠습니다. png 파일 형식의 이미지 파일을 다운받아 Sprtie 폴더 안에 배치해 줍니다. 그 후, Textur Type을 Sprite (2D and UI)로 설정하고 Sprite Mode를 Multiple로 바꾸고 Apply로 적용해 줍니다. 그리고 Open Sprite Editor을 클릭하여 해당 창을 열어줍니다.그리고 Slice에서 해당 스프라이트 이미지들이 균일한 간격의 Atlas 파일이라면 Type을 Grid By Cell Size를 클릭하여 원하는 크기로 자르면 됩니다. 이 이미지는 현재 균일한 간격을 제공하고 있지 않기 때문에 Automatic을 통해 유니티 자체적으로 인식하여 Slice를 진행하겠습니다. 아마 조그마한..

UI-Text, Font, Button

Unity 엔진에서 야심차게 6를 공개했습니다. 많은 기능들이 리뉴얼되거나 추가되었는데 UI 기능에도 변경사항들이 생겼습니다. 이번 글은 Text, Font, Button을 알아보겠습니다. Button을 먼저 만들어보겠습니다.처음 생성하면 회색 버튼일텐데요 색과 관련된 속성은 Inspector창에서 수정할 수 있습니다.Interactable: 상호작용하는가 안하는가Transition: 색 속성[ None, Color Tint, Sprite Swap, Animation ]None: 아무것도 사용하지 않겠다는 뜻으로 흰색으로 표현합니다.Color Tint: 버튼의 색을 직접 지정합니다.Normal Color: 기본 색Highlighted Color: 버튼에 버튼 위에 놓기만 했을 때Pressed Color:..

UI - Sprite, Image 통해 HP 게이지 표현하기

이번엔 UI의 Image에 Sprite를 사용하여 게임의 HP(체력)를 표현해 보겠습니다. 우선 준비물로 Sprite파일이 하나 필요합니다.전 위의 Sprite 파일을 사용할겁니다. 이 파일의 Inspector 창에서 다룰 것들입니다.Texture Type: 해당 스프라이트, 이미지 파일의 텍스쳐의 타입을 정하는 것입니다. 이번 글에서는 HP만을 다룰 것이기 때문에 Sprite(2D and UI)로 지정했습니다.Sprite Mode: 위의 이미지 파일에는 여러 가지 요소들이 함께 포함되어 있습니다. 필요한 걸 잘라 사용할 것이기 때문에 Multiple로 지정합니다. (한 가지 요소 파일이라면 Single)Generate Physics: 물리적 요소인가에 대한 ON/OFF 기능입니다. OFF로 지정하겠습니..

UI Canvas

UI는 User Interface의 줄인말로 사용자들이 해당 어플리케이션, 프로그램을 사용하기 편하도록 디자인한 것입니다. 게임에선 화면에 있는 버튼 등을 뜻합니다. Unity에서 Hierarchy창에서 우클릭 후 UI를 가져올 수 있습니다. 위처럼 UI - Image를 생성하면 뜬금없이 Canvas가 등장하고 자식으로 해당 오브젝트가 생성되는 것을 확인할 수 있습니다. UI는 어떤 모니터, 장면에서든 특정 위치, 특정 크기를 유지해야하는데 이를 위해 필요한 기능입니다. 과거 카메라 특성 설명 때 절두체(Frustum)을 다룰 때 Near, Far Plane이란 개념이 있었습니다. Canvas는 Far Plane으로써의 기능입니다. Far Plane은 카메라가 최대로 표현할 수 있는 사각면입니다. 그렇다..

코루틴 (Coroutine)을 통한 Picking

코루틴은 Unity에서 비동기적으로 실행할 수 있는 메서드로, 게임 로직에서 특정 동작을 순차적으로 실행하거나 시간 지연을 두고 실행할 때 사용됩니다. 예를 들어, 3, 2, 1, START! 같은 게임 시작 전 알림에 사용할 수 있습니다. 주요 특징을 알아보겠습니다.비동기 실행: 코루틴은 메인 게임 루프와 독립적 실행으로 특정 조건이 충족될 때까지 기다리거나 지연할 수 있습니다.IEnumerator 반환: 코루틴은 IEnumerator 타입을 반환하는 메서드로 정의됩니다. yield return문을 사용하여 실행을 일시 중지할 수 있습니다.시간 지연: yield return new WitForSeconds(seconds); 등을 통해 특정 시간 실행 지연 후 다음 코드를 진행할 수 있습니다.조건에 따른..

Unity 카메라

GTA5, 오버워치, 발로란트 등 1인칭, 3인칭 게임을 플레이해보면 정면 시야를 제공받고 마우스를 바꿔가며 플레이해보셨을 겁니다. 여기엔 렌더링이라는 과정을 거치는데 먼저 정의에 대해 설명드리겠습니다. 렌더링은 3D Scene에서 객체를 화면에 표시하는 과정입니다. 이 과정은 6개의 단계의 작업을 포함합니다.객체의 위치와 상태 결정카메라의 시야조명 계산쉐이딩텍스처 사용최종 출력위의 계산과 과정은 게임 엔진에서 기본적으로 다뤄주기 때문에 세세하게 다루진 않겠지만, 나중에 많은 오브젝트들을 다루는 복잡한 게임을 만들땐 위의 과정들을 훑어보시는 걸 추천드립니다. 오늘은 렌더링과 카메라의 상관관게를 설명할 겁니다. 위의 그림에서 빨간원과 상자는 렌더링되지 않은 오브젝트들이고 초록색 원, 상자는 렌더링되어 시야..

Unity Prefabs과 Stack, Queue

Prefabs은 일종의 오브젝트를 모아놓은 상자라고 생각하면 됩니다. Project창에서 Create -> New Folder로 폴더 생성 후, Prefabs란 이름으로 명명합니다. Unity에서 Profabs 이름의 폴더는 따로 기능이 들어간 폴더로 간주합니다. 위 그림에서 장난감 역할로 넣어놓은 P_Ball 오브젝트가 Prefabs 폴더에 넣으면 이제 이 오브젝트는 필요할 때마다 코드를 통해 복사체(클론)를 생성하여 사용할 수 있습니다.  그냥 Hierarcy 창에서 오브젝트 소환해서 쓰면 안돼? 왜 굳이 그렇게 해야해?그 이유는 여러 Scene에서 유연하게 사용할 수 있기 때문입니다.Scene을 여러 개 사용하는 게임을 개발할 때 Hierarcy창에 똑같은 속성을 가진 오브젝트를 계속 만들어야하는 ..

Unity Collider(Trigger, Collision)

이전에 충돌감지에서 Collider를 다룬 적이 있습니다. 이번엔 그 Collider를 조금 더 세부적이고 관련된 추가적인 기능들에 대해 알아보겠습니다.Trigger과 Collider 관계CastPickingLayer1. Trigger과 Collider 관계 Trigger는 수학적 기능이 배제된 상태로 쉽게 설명하면 오브젝트 간 통과하는 기능입니다. 해리포터에서 등장한 호그와트로 가는 기차역, 9와 3/4 승강장입니다. 여기서 각각 Collider 기능이 어떻게 되어있을까요? 우선 3가지 상황을 그림으로 설명드립니다.1번 상황: Trigger가 둘 다 켜져있을 시, 그대로 통과합니다.2번 상황: Trigger이 벽만 켜져있을때도, 그대로 통과합니다.3번 상황: 둘다 Trigger가 켜져있지 않다면, 통과..

Unity 충돌감지

Unity에서 오브젝트 충돌감지에 중요한 두 가지 Component가 있습니다.Collider: 충돌체크Rigidbody: 물리체크Collider는 충돌체크에 필요한 Component이고 Rigidbody는 물리 기능에 필요한 Component입니다. 둘 중 하나라도 없으면 플레이어 캐릭터가 벽을 통과하는 불상사가 발생할 수 있습니다. 유니티에서 충돌체크를 하는 방법은 4가지가 있습니다.픽셀: 픽셀 하나하나 비교하여 닿으면 충돌 체크하는 방식, 정확하지만 느리다.원: 원 둘의 서로의 중심에서의 거리가 각 반지름의 합보다 낮으면 충돌 처리하는 방식, 정확하진 않지만 빠르다.AABB: Axis-Aligned Bounding Box의 준말로 충돌박스가 오브젝트의 형태에 크기가 바뀌는 방식OBB: Oriente..