2024/10 36

2024 10 23 TIL

새로운 조와 통성명을 하고 유니티의 심화 단계를 다루게 되었다.이번 프로젝트는 3D 영역이라 새로운 영역에 대한 호기심과 또 걱정이 공존한다. 하나하나 차근히 배우고 싶어서 강의진도를 아직 거의 못뺀 상태다.지금 하고 있는 부분은 InputSystem을 이용하여 3D에서의 움직임을 구현하는 단계 강의를 보되 스스로 만들어보려고 노력하고 또 Vector3 와 Vector2를 다루는 것을 연습중이다. 이번 팀의 인원들이 대부분 스탠다드 이하이기에 현재 목표는 과제의 퀄리티도 중요하겠지만  배움을 중점으로 깨우치는 쪽으로 해보고 싶다.   간단하게 TIL 작성을 마치고 다시 강의 내용을 구현해보러

TIL 2024.10.23

시간 복잡도

오늘 특강에서 자료구조에 대한 설명을 시간복잡도라는 개념을 통해 설명을 해주셨는데 시간복잡도라는 개념에 대해 알지 못해 많이 당황하였던 것 같다. 대략적인 맥락으로 보았을 때 시간복잡도에 따라 효율이 달라지므로 리스트를 너무 과신하지 말자는 내용이었던 것 같은데 전체적인 내용을 이해하지 못하여 저녁을 먹고나서 튜터님께서 따로 시간을 내주셔서 추가 강의를 해주셨다.    다시 듣고보니 시간복잡도라는 것은 자료구조를 통해 어떠한 값을 찾을 때에 복잡성에 관한 추정값으로  정확한 값이 아닌 평균적인 근사값인 것 같다. 지난 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

2024 10 22 TIL (싱글톤, 프로퍼티)

싱글톤에 대해 막연히 용도에 맞게 쓰려고만 하였지 제대로 이해하였다 생각하지 않기에 검색과 질문을 통해 생각을 정리해 보려하였다. 먼저 유니티에서 싱글톤을 쓰는 이유는 MonoBehavior 을 상속받는 클래스를 new 키워드로 인스턴스를 생성할 수 없기 때문에 전역변수(static)을 활용하여 객체(class)에서 직접 멤버를 끌어쓰는 것으로 알고 있다.  이것만으로는 이해하기가 힘들었기에 좀 더 파고들어 키워드 별로 검색을 해보았다. 먼저 객체 객체는 동일한 목적이나 기능을 하는 변수나 함수들을 각각 하나로 묶은 것을 정의한다라고 합나다. 그리고 클래스(class)는 객체를 정의해 놓은 틀 , 설계도라고 생각합니다.  즉 객체는 기능  클래스는 기능을 활용하기 위한 수단입니다. 클래스안에 객체를 모아..

TIL 2024.10.22

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

2024 10 21 TIL

UI를 사용할 때 캔버스 설정을 Scale with screen size 를 사용하면 화면을 조절하였을 때 오브젝트가 같이 조절됨 피벗: 오브젝트의 중심점 오브젝의 Position 값을 0,0 을 하였을 때 피벗 값을 기준으로 놓이게 된다.  앵커 : UI 오브젝트가 고정될 위치를 지정하며 앵커는 실제 크기 범위와 관계 없이 0부터 1까지의 상대적인 값을 가지며 해상도가 달라졌을 때 고정된 위치를 따라감

TIL 2024.10.21

2024 10 18 TIL

이번에 발사체에 대한 구현이 많이 늦어져서 제대로 테스팅을 못해보고 있는 상황입니다.따라서 주말동안에도 작업을 하면서 구현할 부분들을 마저 끝내려 합니다.  앞으로 주말동안 수행할 과제: 구현할 사항:  탄환의 피아 구분,폭탄은 적 탄환만 소거 구현할 방법 : 플레이어가 사용하였는지 몬스터가 사용하는지 변수값으로 태그를 저장하여 projectileData에 type으로 저장 int type : player 1 0   player2 1 enemy -1 TYPE 플레이어만 공격 ELSE  적만 공격 참고할 자료 및 과제 : Collision 충돌 판정에 대한 자료 , 유니티 DOCS , Physics 2d 에 관한 이해  , 조원들의 수행한 코드를 보면서 연결 찾기   유의사항:enter 최소화 트리거에는 ..

TIL 2024.10.18

2024 10 17 TIL

오늘 실수한 것 오브젝트의 스크립트 변수에 게임 오브젝트를 붙이고 나서 GetComponent로 다시 새로운 참조를 불러옴 Scriptable Object 를 GetComponent로 불러온 것    최우선적으로 구현해야할 과제 충돌효과에 대한 로직 (가장 중요..) ObjectPooling 에 Singleton을 부여해서 따로 참조없이 활용해보고자 하였음 강의 투사체 구현 관련으로 정독 다시 해볼것  어떤식으로 코드를 많이 작성하여야 실력이 늘지 생각해볼것   주저없이 모르는 것에 대해 물어볼 것

TIL 2024.10.17

2024 10 16 TIL

투사체 구현에 관한 UML을 작성하는 활동을 하였습니다.구상해본 바로는 투사체를 프리팹으로 두고 오브젝트 풀을 활용하여 사용된 투사체를 다시 사용하고충돌효과를 생각하여 플레이어나 적을 태그로 정의하여 태그에 해당한다면  투사체 오브젝트를 비활성화하는 식으로 코드를 작성하려합니다.  객체지향적으로 코드를 작성하려면 기능적으로 세분화하여 작성을 해야하는데 아직 감이 다 잡히는 것 같진 않습니다.  오늘 특강 내용으로는 인풋시스템에 대해 알아보았습니다.  강의에서 들은 내용이 상당히 많은 양인데 특강 동영상이 올라오고나서 제대로 한번 정리해보고 싶습니다.  그리고 인풋시스템에 관해 유니티 코리아에서 다룬것이 있어 주말에 한번 시청해보려합니다. https://youtu.be/dsLBzrbo-Vs?feature=..

TIL 2024.10.16