분류 전체보기 (77) 썸네일형 리스트형 UNITY 게임개발트랙 - 내일배움캠프 81일차 TIL 내일배움캠프 79일차 TIL 오늘은 주말동안 진행한 유저 테스트 피드백의 내용을 토대로 디버깅 및 기능 수정을 진행했다. 디버깅 및 유저 테스트 피드백 반영 원거리 무기 조준 메커니즘 개선 기존 방식 : 총 60도의 조준각, 마우스 커서가 조준각을 넘어가면 정면으로 투사체 발사 개선 후 : 조준각 90도로 상향 및 마우스 커서가 최대 조준범위를 넘어가면 최대값의 조준각으로 투사체를 발사하도록 변경, 발사되는 각도에 따라 투사체 회전 플레이어가 맵 콜라이더 사이에 끼이는 현상 개선 기존에 Raycast를 활용하여 콜라이더끼리 충돌하기 전에 충돌을 미리 감지하여 속도를 줄여서 충돌 연산이 일어나기 전에 플레이어가 지형 콜라이더를 지나가는 현상을 방지하는 방식 그대로 사용하되, 알고리즘을 더 개선했다. 기존 .. UNITY 게임개발트랙 - 내일배움캠프 79일차 TIL 내일배움캠프 79일차 TIL 이번주는 주말동안 진행한 유저 테스트 피드백의 내용을 토대로 디버깅 및 기능 수정에 집중할 예정이다. 오늘은 스토리 컷씬이 너무 길고 지루하다는 의견을 해결하기 위해 컷씬을 짧은 여러개의 컷씬으로 쪼개는 작업을 진행했다. 컷쎈 제작 - Playable Director, Timeline 예전 팀 프로젝트에서 컷씬을 제작할 때 했던 것 처럼, PlayableDirector 컴포넌트와 Timeline을 활용하여 컷씬을 제작했다. 대신 하나의 컷씬을 하나의 타임라인으로 만드는 것이 아니라, 장면을 여러개의 타임라인으로 쪼개 만들어서, 추후 스킵 기능을 도입한다면 스킵 버튼이 눌렸을 때 다음 타임라인을 불러와서 재생할 수 있는 구조로 설계했다. 현재 타임라인 재생이 끝나면 배열에 있는.. UNITY 게임개발트랙 - 내일배움캠프 76일차 TIL 내일배움캠프 76일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 객체를 이동할 때 벡터를 정규화(Nomarlized) 하는 이유에 대해 설명해주세요. 벡터를 정규화하는 가장 큰 이유는 이동속도를 균일하게 유지하기 위해서이다. 벡터를 정규화하면 방향은 유지되고 크기가 1인 단위벡터가 되는데, 이는 우리가 객체를 벡터의 크기와 상관없이 균일한 속도로 이동하고 싶을 때 큰 도움이 된다. 그 외에도 벡터를 정규화하여 물리연산에 사용하면 크기를 고려할 필요가 없으므로 성능 향상에 긍정적인 영향을 끼친다. 월드 스페이스(World Space)와 로컬 스페이스(Local Space)의 차이에 대해 설명해주세요. 월드 스페이스는 게임이나 3D 환경의 전체적인, 절대적인 좌표 시스템.. UNITY 게임개발트랙 - 내일배움캠프 75일차 TIL 내일배움캠프 75일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 팀 프로젝트 - 트러블 슈팅 오늘은 곧 있을 유저 테스트를 위해 대부분 디버깅과 트러블 슈팅 위주의 작업을 진행했다. 간헐적으로 플레이어가 타일맵 사이에 끼이는 현상 https://community.gamedev.tv/t/player-gets-randomly-stuck-on-tiles/205142 해외 사이트를 참고하여 해당 문제를 해결하는 방법을 알아냈다. TilemapCollider와 함께 CompositeCollider를 사용하는 것이다. CompositeCollider를 사용하면 인접한 콜라이더들을 하나의 콜라이더로 취급하여, 기존에 콜라이더들 사이에 존재했던 작은 틈새들을 메울 수 있다. 여기서.. UNITY 게임개발트랙 - 내일배움캠프 74일차 TIL 내일배움캠프 74일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 오브젝트 풀링(Object Pooling)이 무엇이며, 어떻게 구현하는지 설명해주세요. 유니티에서 오브젝트를 생성하는 작업과 파괴하는 작업은 많은 리소스를 필요로 하는 무거운 작업이다. 때문에 이러한 작업을 최소화하기 위해, 오브젝트를 미리 여러개 만들어두고 필요할 때마다 꺼내서 사용하고 사용하지 않을 때 다시 넣어둠으로써 메모리를 절약하는 디자인 패턴이 바로 오브젝트 풀링이다. 유니티에서 오브젝트 풀링을 사용하는 방법은 크게 두 가지이다. 유니티에서 제공하는 오브젝트 풀 기능 사용 직접 구현 유니티에서 제공하는 오브젝트 풀을 사용하는 방법은 매우 간단하다. IObjectPool 필드를 선언하고, 필수구.. UNITY 게임개발트랙 - 내일배움캠프 73일차 TIL 내일배움캠프 73일차 TIL 오늘은 팀 프로젝트 개발을 진행하고 이번주 진행한 내용을 돌아보는 시간을 가졌다. 팀 프로젝트 - 금주 작업 내용 회고 화산 테마 맵 프리팹 제작 및 맵 생성 알고리즘 구현 새로 구매한 플레이어 에셋 적용 애니메이션 세팅 플레이어의 각종 물리연산과 애니메이션 연결 회피, 홀드 스킬 등 새로운 동작 추가 인벤토리에 플레이어 스탯과 장착중인 아이템 출력하는 기능 추가 플레이어의 애니메이션과 실제 물리 연산과의 시간차가 존재하는 문제가 있었다. 문제 해결을 위해 애니메이션의 종료 여부를 알 수 있는 방법을 찾아보았고, GetCurrentAnimatorStateInfo(0).normalizedTime을 검사하여 애니메이션이 실행되는 동안 필요한 기능의 처리를 하고 애니메이션 종료 시.. UNITY 게임개발트랙 - 내일배움캠프 72일차 TIL 내일배움캠프 72일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 드로우콜(Draw Call) 배칭이 무엇인지 설명해주세요. 드로우 콜이란 CPU가 GPU에게 오브젝트를 그리라고 명령하는 것을 의미합니다. 배칭이란 드로우 콜을 줄이는 작업을 의미합니다. 유니티는 2가지 드로우 콜 배칭 메서드를 제공합니다. 정적 배칭(Static Batching) : 정적 게임 오브젝트의 경우 유니티가 이들을 결합하고 함께 렌더링합니다. 모든 렌더 파이프라인이 지원합니다. 메모리와 스토리지가 많이 사용됩니다. 동적 배칭(Dynamic Batching) : 메시가 충분히 작은 경우 CPU에서 버텍스를 변환하고 유사한 버텍스를 함께 그룹화하여 하나의 드로우 콜로 렌더링합니다. 고해상도 렌더.. UNITY 게임개발트랙 - 내일배움캠프 71일차 TIL 내일배움캠프 71일차 TIL 오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다. 유니티로 타이머를 구현하는 알고리즘을 설명해주세요. 가장 간단한 방법은 float형 변수를 만들고, Update함수 안에서 해당 변수에 Time.deltaTime을 더해주는 것입니다. Time.deltaTime이란 무엇이며, 사용하는 이유에 대해 설명해주세요. Time.deltaTime은 프레임과 프레임 사이의 시간 차이를 반환합니다. 이것이 필요한 이유는 기기마다 성능이 달라서 다음 프레임을 호출하기까지 걸리는 시간이 다르기 때문에, Update함수 안에서 특정 값을 정해진 상수만큼 변경한다면 성능이 좋은 기기에서는 다른 기기보다 상대적으로 많은 변화가 일어날 수 있기 때문에, 변화하고자 하는 상수에 .. 이전 1 2 3 4 ··· 10 다음