
Unity를 사용하다 보면 상당히 자주 사용하게 되는 것이 Awake(), Start(), Update(), FixedUpdate(), LateUpdate()이다.전부 '특정 타이밍'에 적용되다 보니 타이밍을 맞춰서 사용하는 경우에 상당히 자주 사용하게 된다.다만, 이러한 함수들에도 난점은 분명하게 존재한다. 바로 '같은 타이밍이라면 순서를 알 수 있는 수단이 전무하다'는 것.이러한 점 때문에 클래스 간의 선후관계는 Awake() → Start()나 Update() → LateUpdate() 정도 말고는 불가능하다.즉, 어떤 경우라고 해도 2단계의 선후관계만 만들 수 있다는 이야기. Update() → LateUpdate()는 쓸 일이 딱히 없기 때문에 상관이 없지만, Awake() → Start()에서..

금주에는 클리커 게임이나 방치형 게임 중 하나를 선택해서 만드는 과제를 수행하였다.Git URL: https://github.com/lsu0503/ProjectIdleOrClicker.git 제목: 달려가자! 우당탕탕 2 - 회쳐모여 우리 친구들![※ 본 프로젝트는 이전, 달려가자 우당'탕탕'을 함께 작업했던 전 팀원들의 동의 하에, 설정을 차용하여 작업한 프로젝트입니다.][※ 설정 만 차용했지, 코드는 완전히 새로 작성한 것입니다.]장르: 물량 공세 방치형 던전 크롤러 시나리오 컨셉1편의 결과로 막대한 보상금을 받은 우리의 리자드맨!보상금으로 배 터지게 먹은 우리의 리자드맨은 문득 떠오릅니다!'다른 곳도 쓸어버리면 또 배부르게 먹을 수 있겠지? 친구들한테도 알려줘야지!'그렇게 리자드맨은 달려갑니다!"우..
오늘은 개인 제작 보다는 협업에 유용한, 디자인 패턴 중 하나를 정리해 볼까 한다.다만, 개인 제작에도 도움이 되는 게, 디자인 패턴은 기본적으로 코드의 정리 및 분화에 특화되어 있다 보니 가독성이나 기능 제한 등, 개인적인 작업에 유용한 점도 확실하게 있는 편이다.특히, 이번에 정리할 유한 상태 머신은 '다른 클래스에서 확실하게 '이거다'하는 방식으로 행동 제어가 가능하다'라는 점에서 익숙해진다면 상당히 유용한 내용이다. 그렇다면, 한번 정리 해 보자.'상태 머신(State Machine)'이란?유한 상태 머신에 대해서 정리하기 전에, '상태 머신'이라는 용어 부터 정리해 보자.프로그래밍을 배우면서 가장 먼저, 그리고 가장 확실하게 자리잡는 개념은 '모든 프로그램은 입력과 출력이 존재하며, 입력과 출력..
이번에는 다소 간단한 주제로 작성해 볼까 한다. 최근 들어서 픽셀-메쉬 혼합형 그래픽 형식이 크게 유행하고 있다.[HD-2D라는 명칭이 있기는 하나, 이는 스퀘어 에닉스의 상표 명이라서 그래픽 형식을 지칭하진 못한다.]2.5D라는 표현도 있긴 하나, 이쪽은 3D 환경의 사이드뷰 내지는 탑뷰에서도 쓰이는 용어이기 때문에 정확하게 이러한 형식의 그래픽 스타일을 말한다고 하기는 힘들다.[심지어 서브컬쳐에서는 '실사화 컨텐츠'를 의미하기도 한다고 한다.]그러니, 본문에서는 임시로 픽셀-메쉬 혼합형 그래픽이라고 서술하겠다. 픽셀-메쉬 혼합형 그래픽은 픽셀 그래픽에서 항상 난점이었던 배경과 지형 등의 스케일이 큰 요소들은 3D 오브젝트로 구현하면서 캐릭터나 아이템 같은 스케일이 작고 플레이어가 직접적으로 상호작용..

URP는 Universal Rendering Pipeline의 약자로, 기존 Built-in 방식의 난점을 해소하고 전체적인 퍼포먼스를 향상시키기 위해서 개발된 Rendering Pipeline이다.이러면 Rendering Pipeline이 뭔가 싶을 텐데, 간단하게 말하자면 3D로 구성된 오브젝트를 화면에 띄우기 까지의 과정이라고 생각하면 된다.그래도 이해하기 힘들 수 있으니까, 오늘은 Rendering Pipeline과 URP에 대해서 조금 더 알아보자.Rendering Pipeline렌더링 파이프라인은 상술했듯이, 게임 오브젝트를 화면에 어떻게 그려지는 가에 대한 개념이다.실질적인 처리 과정은1. 게임 공간 상의 좌표를 카메라 상의 좌표로 치환2. 카메라 절두체에 속하지 않은 오브젝트를 제외3. 절..
어제 말했듯이, 오늘은 Particle System의 코드 상에서의 처리 방법에 대해서 정리해 보겠다.다만, 어제 내용에서 크게 바뀌는 점이 없는 게, 접근법이 꽤나 직관적이다.정확히는 변수 접근 만으로 수정이 가능하고, 함수로 쓸 만 한 것은 Play()와 Stop() 뿐이기 때문에 굳이 정리할 것이 없다.그렇다면, 그 방법을 정리해 보자.오늘은 다소 짧을 것이다.우선, ParticleSystem을 관리하려면 ParticleSystem을 받아올 변수를 생성해야 한다.ParticleSystem particleSystem = targetObject.GetComponent();ParticleSystem이 컴포넌트라는 점을 보면 알겠지만, 상기 방식으로 ParticleSystem을 받아오는 변수를 만들자.당연..

금주에는 팀 프로젝트로 3D 게임 제작을 진행하였다.선택지는 러너, 퍼즐, 생존 중 선택이었는데, 우리 팀은 퍼즐을 선택하였다.[사실, 사전 투표에서는 생존이 우세였는데, 호러 컨셉이 나오자 마자 전원 만장일치로 퍼즐이 되었다.] 본인은 그 중 퍼즐 로직을 담당했다.[이번에는 본인 파트에 관해서는 트러블 슈팅을 할 만 한 게 없었다. 아래 설명으로 모두 설명이 되다 보니...;;]그럼, 본인이 작성한 것을 기반으로 한번 둘러보자. [Project git URL: https://github.com/lsu0503/Puzzle_Horror_8_Team.git] GitHub - lsu0503/Puzzle_Horror_8_Team: 공포 퍼즐게임공포 퍼즐게임 . Contribute to lsu0503/Puzzle..

오늘은 파티클 시스템에 대한 강좌를 청강하였다.파티클 시스템을 힘 줘서 배운다기 보다는 사용법을 익히는 수준의 강의였긴 하지만, 전체적으로 알아두면 추후 이러저러한 부분에서 잘 사용할 수 있을 것 같았다.그렇다면, 이것을 잊기 전에 빨리 정리하도록 하자.Particle이란?파티클은 '입자'를 의미하는 영어단어로, 게임이나 기타 영상 매체들에서 다종다양한 특수효과를 위해서 사용하는 아주 간단한 개체들을 말하는 용어다.일반적으로 매우 단순한 움직임을 보이기 때문에 한 묶음으로 편성되는 경우가 많으며, 그 대신 다른 요소들과는 차원을 달리하는 개체량을 자랑한다.그렇기 때문에 알음알음 아는 사람들 사이에서 파티클 작업은 '시간과의 싸움'이라는 인식이 강하다.Particle System?파티클 시스템은 유니티에서..
일전에 '움직이는 플랫폼을 따라서 움직이는 탑승자'에 대해서 다뤄본 적이 있었다.결과적으로는 'Raycast를 이용해서 따라서 움직인다'는 결론을 내렸었지만, 실제로 쓸 수 있는 수단은 매우 다양하다. 자, 이제 그렇가면 물체가 어딘가에 '매달려 있어야 한다'라고 한다면 어떻게 해야할까.[물론, 물리 법칙은 정상적으로 작동 되어야 한다는 전제조건도 만족해야 한다.]스크립트를 이용해서 구현하는 방법도 있겠지만, 유니티 상에서 기본적으로 제공하는 '조인트'라는 기능이 존재한다. 그럼 조인트에 대해서 간략하게 알아보자.조인트는 지정한 물체들 간의 연결적인 고정관계를 형성할 때 사용하는 컴포넌트다.당연하지만, 유니티 상의 물리 법칙을 적용하기 때문에 Rigidbody가 필수로 적용되어 있어야 한다. 본문에서는 ..
MeshCollider는 이래저래 자주 쓰게 되는 Collider 형태다.해당 오브젝트가 가지고 있는 메쉬의 형태로 Collider가 생성되는 기능으로 꽤 자주 사용되는데, 남용하는 것은 좋지 않다.어째서인지 살펴보자. 1. 최악의 처리 속도MeshCollider가 Mesh의 형태를 따라서 충돌을 감지하기 때문에 처리 부하가 어마어마하게 높다.다른 콜라이더들도 이런저런 성능 차가 있는 편이지만 MeshCollider는 특히 더하다.그렇기 때문에 사용하는 기능이 Convex인데, 이에 대해서는 아래에서 살펴보자. 2. Convex의 부정확함Convex는 MeshCollider의 처리 부하를 보완하기 위해서 추가 처리를 해서 Collider의 Vertex(점)의 수를 줄이는 기능이다.[이전에는 면이라고 적었..