전체 글
-
TIL_85(InputSystem)TIL 2023. 12. 4. 22:36
23.12.04. 85차 오늘은 지난 주말동안 테스트를 통해 받은 설문조사를 토대로 회의를 진행했다. 아무래도 게임이 키보드와 마우스 두개가 어중간하게 섞여 동작되다보니 모든 부분에서 마우스와 키보드 둘다 작동되는것이 좋겠다고 판단하여 내가 맡았던 Option 시스템도 기존엔 마우스로 클릭만 되었으나, 키보드로도 선택할 수 있도록 수정하고있다. 결과부터 말하자면 성공적으로 키보드입력도 넣었으나, 게임 진행 도중 옵션창을 열고 다시 옵션창을 닫을때 스페이스바를 누르게 되면 게임내의 캐릭터가 점프를 하게 된다. 이 부분은 내일 팀원들과 다시 상의를 해보고 고칠지 아니면 그대로 둘지를 얘기해봐야겠다.
-
TIL_84(Texture&Sprite)TIL 2023. 12. 1. 21:24
23.12.01. 84차 오늘은 기술면접시간에 Texture와 Sprite에 대해 공부했다. Texture는 3D 오브젝트의 표면에 매핑시킬 이미지 파일을 뜻한다. 포맷으로는 png,jpeg,bmp,gif등이 있다. 3D게임에서 오브젝트에 원하는 이미지나 그림, 정보들을 텍스쳐로 넣어 사용할 수 있다. Sprite는 2D 그래픽 오브젝트로 2D그래픽에 사용되는 텍스쳐의 일종이다. 일반적인 png나 jpg를 선택하고 TextureType에서 Sprite(2D and UI)를 눌러 Apply해주면 Sprite로 만들 수 있다. 평면적인 오브젝트에 텍스쳐를 입힐때 사용되며 3D 게임에서도 UI를 만들때 사용된다.
-
TIL_83(물리엔진)TIL 2023. 11. 30. 21:09
23.11.30. 83차 오늘은 기술면접시간에 물리엔진에 대해 공부했다. 유니티에서 물리엔진은 Rigidbody(강체)와 Collider(충돌체)가 있어야 하며, Rigidbody는 오브젝트에 물리적 힘의 영향을 받을 수 있도록 도와주고, Collider는 오브젝트에 충돌 연산을 할 수 있도록 도와준다. 이때 두 오브젝트 사이의 충돌을 감지하기 위해선 두 오브젝트 다 Collider를 가지고 있어야 하고, 적어도 두 오브젝트 중 하나는 Rigidbody 컴퍼넌트를 보유하고 있어야한다. 우리는 Rigidbody 컴퍼넌트를 통해서 질량, 공기저항, 회전시의 공기저항, 중력 등을 조작할 수 있다.
-
TIL_82(Layer, Tag)TIL 2023. 11. 29. 21:18
23.11.29. 82차 오늘은 기술면접 시간에 Layer와 Tag에 대해 공부했다. 레이어는 오브젝트들의 그룹을 만들고 관리하는 역할입니다. 레이어는 씬의 일부분만을 렌더링 하거나, 물리적 충돌을 판정하는데 사용된다. 태그는 오브젝트들을 식별하는 역할이다. 레이어가 그룹관리라면 태그는 단일 게임오브젝트를 관리한다. 태그는 레이어보다 더 좁은 범위에서 오브젝트들을 확인한다. 레이 캐스팅에서 레이어마스크를 사용해 게임오브젝트들을 판단한 후 태그로 게임오브젝트를 판별하여 대상을 확인한다.
-
TIL_81(AudioSource)TIL 2023. 11. 28. 21:16
23.11.28. 81차 오늘은 캐릭터가 아이템을 먹을때 효과음이 나도록 코드를 구성했다. 캐릭터가 아이템을 먹는 판정이 캐릭터 스크립트에 있는게 아니고 아이템 스크립트에 있었기 때문에 효과음 역시 아이템 스크립트안에 넣어주었다. 그냥 단순하게 AudioSource를 추가해준 후, Awake에서 GetComponent를 통해 인스펙터창의 AudioClip을 가져오고, 그 후 ItemSFX.Play() 함수와 ItemSFX.volume = 0.75f; 함수를 사용하여 재생과 사운드 조절까지 마쳐 주었다. 그리고 인스펙터창에 원하는 AudioClip를 넣고 PlayAwake의 체크를 해제해주었다.
-
TIL_80(최적화)TIL 2023. 11. 27. 21:00
23.11.27. 80차 오늘은 기술면접 시간에 최적화에 대해 공부했다. 유니티 최적화 기법에는 오브젝트 풀링, LOD, 오클루전 컬링, 배치 랜더링, 코드 최적화, 텍스처 아틀라싱, 스태틱 배치, 동적 해상도 스케일링, 스크립터블 오브젝트, 셰이더 최적화등이 있다 오브젝트 풀링과 LOD, 오클루전 컬링, 배치 랜더링은 이전에 공부를 했었던 내용이라 알고 있었지만 나머지는 생소한 방법들이었다. 코드 최적화는 말그대로 스크립트의 코드를 최적화하여 더 효율적으로 실행되도록 하는것이다. 텍스처 아틀라싱은 여러 텍스처를 하나의 텍스처 아틀라스로 결합하는 기법이다. 스태틱 배치는 빌드 시 정적 오브젝트를 단일 메시로 결합하는 기법이다. 동적 해상도 스케일링은 현재 성능에 따라 게임의 해상도를 동적으로 스케일링하는..
-
TIL_79(컬링)TIL 2023. 11. 24. 21:09
23.11.24. 79차 오늘은 기술면접준비 시간에 컬링에 대해 공부했다. 컬링이란 렌더링이 필요하지 않은 오브젝트들을 추려내는 것을 뜻한다. 드로우 콜을 줄이기 위해 카메라 시야 밖의 오브젝트들을 렌더링에서 제외하는 방식을 사용할 때 필요한다. 프러스텀 컬링은 씬에서 보이는 카메라의 사다리꼴 모양의 시야 안에 들어온 오브젝트들만 렌더링하는 방식이다. 오클루전 컬링은 다른 오브젝트에 의해 숨겨진 오브젝트를 걸러내준다. 이 때 오브젝트들은 오클루더(다른 오브젝트를 가리는 오브젝트)와 오클루디(오클루더에 의해 가려지는 오브젝트)로 나뉜다. 오클루더는 사전 연산을 걸쳐 데이터를 미리 Bake를 하여 static오브젝트로 만든다. LOD(Level Of Detail)를 통한 컬링도 가능하다. LOD를 이용하여 ..
-
TIL_78(벡터의 정규화(Normalized))TIL 2023. 11. 23. 20:56
23.11.23. 78차 오늘은 벡터의 정규화에 대해 공부했다. 한변의 길이가 1인 정사각형공간을 한꼭지점에서 다른 꼭지점으로 이동할때, 1초에 걸려서 도착하려면 이웃한 꼭지점으로 1/s 의 속도로 이동해야한다. 하지만 대각선에 위치한 꼭지점으로 이동할땐 1초에 걸려서 가려면 이웃한 꼭지점으로 갈때보다 약 1.4배는 빠르게 이동하게 된다. 벡터를 정규화 해준다면 어떤 상황에서도 속도를 동일하게 해주어 같은 시간동안 같은 거리를 갈수 있도록 할 수 있다. 크게 보자면, 같은 시간동안 같은 프레임을 가지게 해주는 Time.deltaTime과 같은 시간동안 같은 거리를 가게 해주는 벡터의 정규화(Normalized)는 비슷한 성격을 띄고 있다고 할 수 있다.