CASTOWN 트레일 영상 개발실력이 영상퀄리티를 따라가지 못해 아쉬운 마음이 가득했던 프로젝트였습니다. CASTOWN프로젝트를 통해 처음 핸드트래킹 개발을 진행했기에 퀄리티가 미흡하다는 변명은 핑계겠죠?하하ㅠ 저의 개발실력이 아직 많이 부족하다는 것을 느꼈고 앞으로 더 많은 프로젝트를 통해 VR개발 실력을 발전하고 싶다는 계기가 되었습니다. + 핸드트래킹 기술도 아직 부족한 기술이라는 것도 많이 느끼게 되었습니다. 저를 믿고 맡겨주신 디자이너분들께 매우 감사드리며 더 나은 퀄리티를 뽑아내지 못해 아쉬운 마음 죄송한 마음도 알아주셨으면 좋겠네요ㅠㅠㅠ 다들 좋은 성적받기를 기도하며 행복한 미래만 가득하시길..... (무상으로 진행된 프로젝트며 저의 열정을 담았을 뿐...) 실제 프로젝트(인게임) 영상
코드를 짜다보면 인스펙터창에 설정하는 경우가 많은데 그렇게 되면 인스펙터창이 지저분해지기 일상입니다. 이번 시간에는 Inspector를 커스터마이징할 수 있는 Attribute에 대한 Tip을 소개하고자 합니다. [Space(int)] int 값만큼 위 아래 간격을 벌려줍니다. [Header("String")] String으로 머리말을 달아줍니다. [SerializeField] public으로 쓰면 안되는 요소들을 인스펙터창에 보여주기 위해 사용합니다. [Tooltip("String")] 요소에 마우스를 올려두면 말풍선이 나오고 String부분에 적은 내용이 나오게 됩니다. [RequireComponent(typeof())] 특정 컴포넌트를 자동으로 부착해줘서 오류를 사전에 방지해줍니다. 그 외 AddC..
터레인 생성하기 하이러키창에 우클릭 후 [3D Object] -> [Terrain]을 클릭하여 터레인을 하나 생성해줍니다. 생성한 오브젝트를 클릭해보면 Terrain 컴포넌트가 붙여져 있는 것을 확인할 수 있습니다. 터레인의 크기 같은 경우에는 [Mesh Resolution] 탭에서 설정할 수 있습니다. Detail 같은경우에는 최적화와 관련되어 있는 값입니다. [Basic Terrain] 부분입니다. Term Description Draw 지형을 그릴지 여부를 결정합니다. Pixel Error 픽셀 에러는 픽셀이 얼마나 정밀하게 그려질지를 나타냅니다. 값이 높을수록 픽셀의 정밀도가 높아지지만 그만큼 리소스를 많이 잡아 먹기에 적절히 설정해야 합니다. Base Map Dist 모든 맵의 텍스처를 그릴 것..
Occlusion Culling 찍먹하기 큐브를 몇가지 생성해준 다음 [Occluder Static]으로 설정했습니다. 오클루전 컬링기능 사용하기 위해 [Window] -> [Occlusion Culling]을 눌러줍니다. Smallest Occluder Smallest Occluder값을 설정하게 되면 파란색 테두리 영역의 크기가 달라집니다. 파란색 영역은 오브젝트를 Occluder로 인식할 최소 크기입니다. 이 값보다 작은 크기를 갖는 오브젝트는 다른 오브젝트를 가리지 않는다고 판단합니다. 사진 속 파란색 큐브의 높이가 3m이고 Smallest Occluder가 10으로 설정되어 있을 때는 뒤의 빨간색 오브젝트를 가리지 못하게 됩니다. ( 3m < smallest occluder) Smallest O..
유니티 Lerp란? Unity의 Lerp("선형 보간"의 줄임말)는 개발 및 컴퓨터 그래픽에서 일반적으로 사용되는 수학 함수입니다. 이 함수를 사용하면 지정된 기간 동안 두 값 사이를 부드럽게 보간하여 부드러운 전환이나 애니메이션을 만들 수 있습니다. Lerp 함수에는 시작 값(start), 끝 값(end), 그리고 보간을 어느 정도까지 해야 하는지를 나타내는 t값(0과 1 사이의 값)의 세 가지 파라미터를 제공합니다. Lerp는 t값을 기준으로 시작 값과 끝 값 사이에 있는 새 값을 계산합니다. t값이 0에 가까울수록 결과가 시작 값에 가까워지고, 1에 가까울수록 결과가 끝 값에 가까워집니다. Unity에서는 다양한 데이터 유형에 따라 Mathf.Lerp를 사용하여 실수 값 사이를 보간하거나 Vecto..
Starter Assets이란 카메라도 다 세팅되어있고 Move컨트롤도 다 구현되어 있는 아주 편한 에셋입니다. Setting 에셋스토어에서 Starter Asset을 검색 후 다운받습니다. 다음으로 이 에셋은 최신(New) Input System을 사용하기 때문에 예전 old한 Input System도 사용하려면 Both로 세팅해주어야 합니다. 앞으로 Starter Assets의 Prefabs폴더안에 존재하는 카메라 및 모델을 사용할 예정입니다.(1번 2번 3번 표기된 프리팹만 가져다가 쓸 것입니다.) PlayerTargetCamera의 Follow안에다가 캐릭터 프리팹안에 있는 PlayerCameraRoot를 넣어주면 됩니다. 새로운 프리팹에 적용하는 방법 휴머노이드 에셋 같은 경우 애니메이터가 설정..
ScriptableObject란 ScriptableObject는 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너입니다. ScriptableObject를 쓰는 이유는 다음과 같습니다. 기존 클래스는 내부 변수 하나 당 4Byte가 듭니다(변수에 따라 다름) . 총 4개의 변수가 사용된다 가정할 때, 4X4 = 16Byte가 메모리에 사용되게 됩니다. 만약 좀비라는 몬스터 프리팹이 1000마리를 일반클래스의 변수로 구현했다면 16 X 1000 = 16000Byte(16KB)가 메모리에 사용되게 됩니다. 16KB는 큰 값은 아니지만, 추후 변수가 추가됨에 따라 점점 메모리 소모량이 많아질 것입니다. 하지만, 스크립터블 오브젝트를 사용하면 좀비를 몇 백마리 사용하든 메모리..
애니메이션 특정 클립에 Event 추가하기 원하는 프레임에 원하는 Events를 추가할 수 있습니다. 이때 주의할 점은 Function이름입니다. 함수 이름을 OnAttackCollsion으로 지었고, OnAttackCollsion을 실행시키고 싶다면 Event Function의 이름도 똑같이 해주어야 합니다. Animator컴포넌트와 실행시키고 싶은 Event Function이 담겨져 있는 스크립트 컴포넌트는 같은 곳에 있어야합니다.
Pooling이란? Unity의 풀링 시스템은 런타임 중에 게임 오브젝트를 효율적으로 관리하고 재사용하는 데 사용되는 기술로, 특히 총알, 적, 파티클과 같은 오브젝트를 자주 생성하고 소멸해야 할 때 유용합니다. 오브젝트를 지속적으로 생성하고 소멸하는 오버헤드를 줄여 성능을 개선하는 데 도움이 됩니다. 작동 방식에 대한 간단한 설명은 다음과 같습니다 초기화 : 특정 유형(예: 총알)의 게임 오브젝트 풀을 생성하는 것으로 시작합니다. 초기화된 게임오브젝트들은 시작과 동시에 비활성화됩니다. 오브젝트 요청: 오브젝트가 필요한 경우 새 오브젝트를 생성하는 대신 풀에서 오브젝트를 요청합니다. 풀은 사용 가능한 오브젝트를 계속 관리해 줍니다. 활성화 및 사용: 풀은 이미 초기화된 풀에서 오브젝트를 제공합니다. 개체..