자료 관리 21

파티클 시스템 - 1 (메인 모듈)

더보기파티클 시스템은 여러 특수효과나 애니메이션 연출을 넣어주고 싶을 때 사용되는 컴포넌트다.이번 프로젝트에서 촛불을 구현하기 위해서는 해당 시스템에 대한 이해가 필요한데 그래서 기능들에 관해 정리해보는 시간을 가진다. 프로퍼티 메인 모듈(main or partice system module)가장 먼저 보이는 Particle System이라고 명시되어있는 칸의 옵션들이다.이 모듈엔 공식문서상 파티클 시스템 전체에 영향을 미치는 프로퍼티가 배치되어있다. 이 모듈은 컴포넌트의 일부이며 다른 모듈들 같은 경우 체크로 비활성화가 가능하지만이 모듈은 새로 생성할 때 기본적으로 활성화되어 있는 옵션으로 보면될 것 같다.  Duration : 파티클의 지속시간 Looping을 끄고 5초로 설정해서 사용해본다면 실행되..

자료 관리 2024.12.03

직렬화(유니티)

직렬화란 유니티에서 직렬화(Serialization)는 데이터의 구조나 오브젝트 상태를 에디터가 저장하고 나중에재구성할 수 있는 포맷으로 자동 변환하는 프로세스를 말한다. 라고 유니티에서 말합니다. 직렬화를 사용하는 이유? 간단하게 생각하자면 데이터를 저장하여 다음 실행 때도 해당 데이터를 불러오고 싶을 때 쓰입니다.여러게임에서  우리가 저장이라는 개념을 알고 있듯 직렬화는 해당 데이터를 불러오고 싶어 그 주소를 기억하고 있는 것과 같습니다.  직렬화할 수 있는 단순 필드 타입Serializable 속성이 있는 비추상, 비일반 커스텀 클래스Serializable 속성이 있는 커스텀 구조체UnityEngine.Object에서 파생된 오브젝트에 대한 레퍼런스기본 데이터 형식(int, float, double..

자료 관리 2024.11.04

AI 네비게이션

과거엔 직접 로직을 작성하여 오브젝트가 스스로 움직이는 것을 구현하였다면 지금은 그럴필요없이 유니티에서 제공하는  AI 네비게이션을 사용하여 구현하는 것이 더 효율적이라고 합니다.   AI 네비게이션을 사용하기 위해선 먼저 패키지를 다운 받아줍니다.패키지 설치가 완료 되었다면 Windows 창에 AI항목이 새로 나타나게 됩니다. 여기서  Navigation (Obsolete) 를 클릭제 경우엔 인스펙터창 옆에 새로 탭이 생겼습니다. 일단 먼저 간단하게 살펴보자면 Agents 는 움직이는 오브젝트에 붙이는 것Areas 는 지형에 대한 레이어를 설정Object에서 이러한 지형 지물에 대한 레이어를 설정해줄 수 있다. bake 창에사 지형을 대상으로 bake를 하게 되면 움직일 수 있는 곳은 파란색으로 설정되..

자료 관리 2024.10.27

Light (Unity)

유니티 3D에서 빛 효과를 사용하고 싶을 때 광원을 사용합니다.   (태양과 횃불 등) 광원을 생성하고 싶을 땐 Hirerarchy 창에서 Light를 새로 만들어도 되고 상단의 GameObject 창에서 찾을 수도 있습니다.광원도 여러가지 종류가 있는데  먼저 점 광원(Point Light) : 생성하면 모든 방향으로 균등하게 빛을 발산하는 광원입니다.구형의 범위에 균등하게 빛을 발합니다.방향성 라이트 (Directional Light) : 무한히 멀리 위치하여 한 방향으로만 빛을 발산하는 광원입니다.지금 프로젝트에서 태양 또한 방향성라이트로 구현이 되어있습니다. 스포트라이트 (Spot Light) : 씬의 한 점에 위치하여 원뿔 모양으로 빛을 발산하는 광원면 광원(Area Light) : 표면 영역 ..

자료 관리 2024.10.25

out ref 키워드

void Update() { RaycastHit hit; if (Physics.Raycast(ray, out hit, rayDistance, layerMask)) { if (hit.collider.gameObject != curInteractGameObject) }} out 키워드는 매개변수를 사용하면서 같은 메서드 내에 선언된 변수에 이 매개변수를 반환해주고 싶을 때 사용된다.그리고 보통 사용할 때는 두개 이상의 반환값을 돌려받고 싶을 때 사용이 된다고 한다.ex)   (out int i , out int j )  (벌써 반환되는값이 두개) 코드블록의 내용을 보면 이미 코드의 흐름에선 hit 변수는 아무값도 할당되지 않고 지나갔지만 out hit 매개변수를 통해 조건에 부합할 때..

자료 관리 2024.10.25

시간 복잡도

오늘 특강에서 자료구조에 대한 설명을 시간복잡도라는 개념을 통해 설명을 해주셨는데 시간복잡도라는 개념에 대해 알지 못해 많이 당황하였던 것 같다. 대략적인 맥락으로 보았을 때 시간복잡도에 따라 효율이 달라지므로 리스트를 너무 과신하지 말자는 내용이었던 것 같은데 전체적인 내용을 이해하지 못하여 저녁을 먹고나서 튜터님께서 따로 시간을 내주셔서 추가 강의를 해주셨다.    다시 듣고보니 시간복잡도라는 것은 자료구조를 통해 어떠한 값을 찾을 때에 복잡성에 관한 추정값으로  정확한 값이 아닌 평균적인 근사값인 것 같다. 지난 C# 강의 때 과제를 최우선으로 하여 강의 진도를 다 못 뺀 것이 이번 특강에 대해 이해가 부족했던 원인이었다. 그래서 지금이라도 조금이나마 강의를 보면서 알고리즘의 개념과 시간 복잡도에 ..

자료 관리 2024.10.23

오브젝트 풀링

Object Pooling 방식은 오브젝트를 미리 생성해두어 비활성화 시켜두었다가 적절한 때에 활성화시켜 동작시키는 형태입니다. 왜 Object Pooling 을 쓰는가Object Pooling 을 쓰는 이유는 오브젝트를 생성하고 파괴하는데 드는 동작비용이 있기 때문입니다. public class ObjectPool : MonoBehaviour{ // 오브젝트 풀링을 할 게임오브젝트 프리팹 public GameObject prefab; private List pool = new List(); private int poolSize = 300; // 최소 300의 반복의 조건을 받음 void Start() { for (int i = 0; i 처음 만들 때오브..

자료 관리 2024.10.23

RayCast

이번에 끝난 프로젝트를 진행하면서 충돌처리를 위해 Collision 과 Collider를 활용하였다.OnCollisionEnter , Stay 등을 통해 충돌한 오브젝트와 상호작용을 하는 방식이라면RayCast 는 오브젝트에서 레이저를 발사하여 레이저에 닿은 오브젝트를 판별하는 형태다. Ray 에 대해 먼저 알아보자면 Ray는 뻗어나가는 직선을 뜻합니다. 오브젝트에서 이용하는 방식은  광선이 나갈 오브젝트의 시작점(origin) 광선의 방향(direction)을 정해주어 사용합니다.Ray를 카메라에서 사용하는 방식도 있는데ViewportPointToRay 는 0에 1범위의 정규화된 벡터값을 이용하고ScreenPointToRay 픽셀 좌표를 사용한다는 차이입니다.Ray ray = new Ray(transf..

자료 관리 2024.10.23

Rigidbody - ForceMode

3D게임 개발 파트로 들어가기전 Rigidbody 컴포넌트의 ForceMode에 대하여 정리하여 봅니다. Rigidbody란 오브젝트에 물리적인 효과를 주기위해 사용되는 컴포넌트를 뜻합니다.Rigidbody 엔 ForceMode 라는 기능이 있는데AddForce 메서드와 함께 사용되며 ForceMode 를 사용하여 물리적인 힘을 부여할 수 있습니다.  ForceMode의 종류:  1. Force : 지속적인 힘을 가한다.Rigidbody.AddForce(Vector3 force,ForceMode.Force);예시로 1이라는 힘을 부여하게 된다면 계속해서 1이라는 힘을 일정하게 부여합니다. 2. Acceleration : 가속도를 적용한다. Rigidbody.AddForce(Vector3 force,For..

자료 관리 2024.10.22

유니티 인풋 필드(Input Field)

인풋필드란?Input Field 는 키보드나 터치패드를 이용하여 문자열을 입력할 때 상호작용을 목적으로 쓰이는유니티 오브젝트입니다. 주로 아이디나 패스워드를 입력하거나 채팅창등을 구현하기 위해 사용됩니다. 생성하는 방법 인풋필드를 생성하는 방법은 유니티의 Hierarchy 창에서 우클릭을 하여 생성할 수 있습니다.인풋필드를 생성할 때 TextMeshPro 와 일반 인풋필드를 볼수 있는데여기서 TextMeshPro는 포인트 크기가 변하거나 해상도가 변해도 글자가 깨지지 않는다는 특징이 있습니다. 또한 최적화가 잘되어있어 TMP가 유료였던 시절에도 기존의 텍스트 오브젝트보다 사용자들이 많이 찾았다고 합니다. 그래서 저도 한번 InputField - TMP 를 활용하여 과제를 해보자 마음 먹고 글을 정리해보려..

자료 관리 2024.10.12