전체 글 47

UI - Canvas

캔버스(Canvas) 모든 UI 요소는 Canvas 안에 위치한다. 캔버스는 Canvas 컴포넌트가 있는 게임 오브젝트이며모든 UI 요소는 반드시 어떤 캔버스의 자식이어야 한다. UI요소 생성시, 예를 들어 UI메뉴의 Image를 사용하여 이미지를 생성했을 때Sence에 아직 캔버스가 없다면  자동으로 캔버스를 생성하고생성한 UI요소는 이 캔버스의 자식으로 생성이 된다.  Event System이라는 게임오브젝트도 같이 생성되는데UI와 사용자간의 상호작용을 관리한다.(터치, 클릭 등) 캔버스 - Render Mode Screen Space - Overlay렌더 모드에서는 UI 요소가 화면에서 씬의 위에 렌더링 되며,스크린의 크기가 조절되거나 해상도가 변경되면 캔버스는 여기에 맞춰 자동으로 크기를 변경한다..

Unity 2024.10.18

Texture

텍스처(Texture)3D 모델의 표면에 적용되는 2D 이미지로, 물체의 색상, 세부 사항, 패턴 등을 추가하여풍부한 그래픽으로 보완해주는 역할을 가진다. 이미지 데이터 : 픽셀로 구성된 2D 이미지로, 색상 정보를 포함 함 UV : 3D 모델의 표면에 2D 텍스처를 매핑하는 데 사용되는 좌표 체계, U와 V는 텍스처의 수평과 수직 방향을 나타내며, 각각의 축이 0에서 1 사이의 값을 가진다.UV 좌표는 텍스처와 3D 모델 간의 연결고리 역할을 함※ U: 텍스처의 수평 위치 (0 = 왼쪽, 1 = 오른쪽)    V: 텍스처의 수직 위치 (0 = 아래, 1 = 위) 예를 들어, (0, 0)은 텍스처의 왼쪽 아래 모서리를, (1, 1)은 오른쪽 위 모서리를 나타낸다. - UV매핑 : 3D 모델의 각 정점에 ..

Unity 2024.10.07

Lerp(선형 보간)

우리는 이렇게 시작 지점과 끝 지점을 알면그 중간의 지점들을 대략적으로 알 수 있습니다. 정확하게 알기 위해서는 70%의 위치를 알려면 최대치에서 0.7을 곱하면 되고 50%의 위치를 알려면 최대치에서 0.5를 곱하면 됩니다(혹은 나누기 2) 그런데이런 경우라면 중간 위치를 어떻게 알 수 있을까요?((27-3)*0.5)+3이런 계산식을 통해 우리는 중간의 위치를 알 수 있습니다. 이렇게양 끝의 위치를 알고 있을때 그 사이의 원하는 위치를 알아내는 것을 Lerp(선형 보간)이라고 합니다이렇게 두개의 object를 준비해준뒤 스크립트를 최상위 부모에 컴포넌트 합니다.using UnityEngine;public class LerpExample1 : MonoBehaviour{ [SerializeField]..

Unity 2024.10.01

Coroutine(코루틴)

Coroutine 유니티에서 비동기적인 작업을 처리 할 때 사용하는 메서드 입니다가장 큰 특징으로는 일반적인 함수와 다르게 코루틴은 실행중이던 함수를 잠시 중지했다가 나중에 원할 때 다시 시작 할 수 있습니다.시간 지연이 필요한 작업들에 아주 유용하게 쓰입니다 public class CoroutineExample : MonoBehaviour{ private Coroutine aCoroutine = null; //코루틴 변수 선언 private WaitForSeconds wait1Sec = new WaitForSeconds(1f); //WaitForSeconds는 IEnumerator를 상속받아서 만들어진 클래스이다. //1.Coroutine 동작 조건 : MonoBehaviour필수, g..

Unity 2024.09.30

Breakout(벽돌깨기) - (1)

어릴적부터 해왔고 지금도 비슷한 형식의 게임들이 나오고 있다.요즘은 어떤 게임의 미니게임들로 여러가지 버전으로 나와서 플레이의 신선함을 주는 정도로 활용 되는 게임이다출시 당시와는 다르게 지금은 여러 아이템이나 기능들을 활용하고 있기도 하다 기본적인 게임형식으로는 아래 패널을 조작해 필드의 공을 쳐서 위의 벽돌 오브젝트들을 파괴하고 점수를 쌓는 형태를 지니고 있다 공부하는 관점으로는 시시각각 변하는 공의 벡터로 인해 학습용도로 괜찮은 게임이라고 할 수 있겠다 준비하기우선 공이 벽과 패널에 닿을 시 튀게 하는 것이 목표이다공에는 양 옆의 벽에 닿았을 때는 x좌표값을 음수로 바꿔 방향을 전환하고패널이나 윗 벽에 닿았을 때 y좌표값을 음수로 바꿔 방향을 전환 해야 한다. using UnityEngine;pub..

Unity/프로젝트 2024.09.25

Prefab

유니티에는 Prefab 라고 부르는게 있다언리얼에서는 Blueprint 라고 부른다고 한다. Prefab은 게임 오브젝트의 재사용성을 위해 생겨난 개념이다 우리가 하는 게임에는 참 많은 것들이 존재하는데 그중에는 돌, 나무 등 무수히 많은 오브젝트도 있다 만약에 내가 만든 게임에 1만 그루의 나무가 있는데 크리스마스를 맞이해서 이벤트로 이 나무에 크리스마스 장식을 하라는 지시가 내려왔다. 1만여개의 오브젝트의 이미지를 변경하라....? 그날로 퇴근은 없는 것 이다. 무식하게 이 1만 그루의 나무를 모두 오브젝트를 다 때려 박아서 만든다면.. 만들때도 힘들고 변경할때는 더 힘들게 되는 것이다 그럼 어떻게 해야하느냐? 이 1만 그루의 오브젝트가 만약 하나의 오브젝트를 재사용해서 만든 것이고 그 원본인 오브젝..

Unity 2024.09.24

Collision(충돌)

Collision은 일반적으로 두 개체가 충돌하는 상황을 말한다.유니티에서는 Collision이라는 클래스가 있으며 두개의 게임 오브젝트가 충돌 했을 때 이 충돌의 이벤트 처리를 처리하는 클래스이다.충돌에 대한 기준을 만들기 위해서Collider라는 컴포넌트를 추가해야한다.Collider는 Box, Sphere, Capsule 등 여러 형태로 구성되어 있다오브젝트의 형태와는 상관 없이 Collider를 만들 수 있고이런형태로 만들게되면 실제로 충돌되는 범위가 Box형태가 된다Collider는 충돌의 경계를 설정하는, 감지를 위한 컴포넌트라고 이해하면 된다. 또한 유니티에서는 충돌 상황에서 두가지의 처리방법이 존재하는데Trigger와 Collision 로 나뉜다 Trigger는이 옵션에 체크가 되어 있어야..

Unity 2024.09.23

Transform(2) - position

지난 글에서 세계 좌표계와 로컬 좌표계에 대해 설명했는데 한번 유니티에서 어떻게 차이가 나는지를 살펴본다. public class test : MonoBehaviour{ private Transform tr = null; [SerializeField] private float moveSpeed = 10f; private void Awake() { tr = transform; }}다음과 같이 test.cs 에 tr 변수를 초기화 시켜 주고 private void Update(){ if (Input.GetKey(KeyCode.W)) { tr.position = tr.position + (Vector3.forward * moveSpeed * ..

Unity 2024.09.20

Transform(1) - 좌표

게임오브젝트를 생성 한 후 인스펙터 창을 보면필수적으로 들어와있는 컴포넌트가 있다.바로 이 Transform이다 Transform에는 Position(위치), Rotation(회전), Scale(크기) 이 3가지에 관한 Vector(벡터)형식의 값을 저장하고 있다는 것을 지난 벡터에 관한 글에서 설명을 했다 벡터형식을 지니고 있기에 이 게임 오브젝트들의 위치를 벡터로 표현을 하게 되는데이를 다른말로 게임오브젝트는 세계 좌표계(혹은 월드 좌표계 - World Coordinate)에 위치한다 라고 말하기도 한다. 유니티의 좌표계는 데카르트 좌표계 (Cartesian Coordinate System)를 사용하고 있는데 이는 프로그래머에게 있어서 중요하지 않으니 기억하지 않아도 되지만(나도 기억안할 거임) 이 ..

Unity 2024.09.20

충돌 처리(1) - AABB

Rigidbody(강체) 유니티에서 게임 오브젝트에 추가 할 수 있는 컴포넌트중 하나이다중력, 마찰등 물리학 적인 것들을 처리하는 용도로 쓰이는데그 활용에는 충돌이 일어났을 때 처리하는 것도 있다 유니티의 충돌처리를 위한 준비1. rigidbody 컴포넌트 - 이 오브젝트가 강체 물리에 영향을 받겠다 라는 처리가 되야함 2. collider(충돌의 형태)가 있어야함게임오브젝트의 초록색 면들로 처리된 부분들, Collider는 물체의 외곽을 정의하고 물체가 다른 물체와 충돌하는지 여부를 판단한다.큐브 모양의 오브젝트에는 Box Collider가 default로 붙게된다. unity 3D에서의 충돌처리는 강체물리를 기본으로 하는데 강체 물리는 물체가 변형되지 않고 고정된 형태를 유지하는 물리적 모델. 즉, ..

Unity 2024.09.19