본문 바로가기

Unity

(9)
[Unity] 책 넘기는 효과 구현하기 (Page Curl) - 3 어찌어찌 완성은 했다만... 아직 부족한 점이 많다. 펀치 마스크를 활용하며 추가적인 마스크를 쓰지 못하게 된 점이때문에 Block 이미지로 앞을 가려줘야 하는 부분이라던지.DOTween과 Update의 충돌부자연스러운 그림자 위치맞물리지 않는 BackPage와 Mask의 관계등등. 하나씩 개선을 해보자.DOTween과 Update의 충돌DOTween으로 인한 이동과 Update에서의 계산 순서가 정해져 있지 않은지, 책 페이지를 넘길 때마다 BackPage가 잠깐 보이는 현상이나, 맨 윗 줄이 딱 맞물리지 않는 현상이 발생한다.  예를 들면 위 사진같은 상황이 발생한다. 이동한 것보다 더 돌아가서, 정확히는 덜 줄어들어서 위처럼 빈칸이 남아버린다. 이를 고치기 위해선 DOTween 대신 Coroutin..
[Unity] 책 넘기는 효과 구현하기 (Page Curl) - 2 지난 포스팅에선 위 부분까지 구현했었다.이제 음영을 넣어 자연스레 만들고, 페이지를 늘려 책 한 권을 완성시켜보자.페이지 늘리기원래 음영을 먼저 하는 게 자연스러운데, 까먹고 늘리는 걸 먼저 해버렸다. (이러면 나중에 음영을 일일이 추가해줘야 한다.) 먼저 프리팹화하고, 하이어라키 창에 여럿으로 늘렸다.  그리고 Blocker는 Book의 바깥쪽으로 빼줬는데, 이후 코드에서 Child를 가져올 때 섞이지 않게 하기 위함이다. 개념적으로도 이게 맞고.  그리고 동시에, Page 내 Back Pivot이 제어하던 이동 함수(MoveCorner)를 Book이 전부 관리하게 바꿨다. 굳이 왜 그랬냐면 MoveCorner 스크립트를 또 배열에 담는 게 낭비 같아서...   그렇게 코드는 아래처럼 변경되었다. us..
[Unity] 책 넘기는 효과 구현하기 (Page Curl) - 1 서론현재 개발 중인 게임의 튜토리얼로, 일기를 쓰듯 시작하려는 기획을 짜놨다. 이에 자연스레 책 페이지가 넘어가는 효과를 구현하려 인터넷을 찾는데... 찾기가 쉽지 않았다. 유니티 무료 에셋 중에도 이런 효과를 구현한 에셋들이 있었지만, 오픈소스 라이센스가 걸려 있어 판매까지 노리는 우리 팀의 프로젝트에 선뜻 쓸 순 없었다. 물론 우리도 코드는 공개할 목적이지만. 그래도 이왕이면 저작권 걱정 없는 효과를 구현해서 나도 쓰고, 남들도 편하게 쓰게 하려는 게 이번 포스팅과 개발의 목적이다.여기서 말하는 책 넘기기 효과란?신바람 김박사TV, "AET#21 에펙 책넘기는 효과(CC Page Turn)", YouTube, 2021. 7. 9., https://www.youtube.com/watch?v=VypbIL..
[Unity] Unity Recorder - 게임 화면 녹화하기 Unity Korea, [유니티 TIPS] 원하는 분위기를 간편하게 연출 가능!, YouTube, 2023.8.2., Unity Color Lookup, https://www.youtube.com/watch?v=TuE2DhhLruc&t=518s Insomniac의 엔딩 연출을 위해 동영상을 찾아보다가, 위 영상에서 엄청난 꿀팁을 하나 발견해 가져오게 되었다. 그건 바로, 유니티 화면을 녹화해주는 Unity Recorder다. 이거 없이 어떻게 살았지? 지금까지 난 블로그에 올릴 영상, 혹은 홍보 영상을 찍을 때 Win + G 키로 진입, 녹화를 눌러 화면을 녹화하고, 크롭, 트리밍, GIF로 변환 과정을 거쳐 GIF 파일을 만들었다. 하지만, Unity Recorder를 쓰면 그럴 필요 없이 깔끔하게 녹..
[Unity] UI 순서 우선순위 문제 인벤토리 구현 도중, 우선순위와 관련한 문제와 맞닥뜨렸다. 그냥 오브젝트였다면 Sorting Layer를 조절해 해결했겠지만, UI의 Image 컴포넌트엔 그런 게 없었다. 아래 방법을 시도해봤으나 실패했고, 다양한 시도를 하며 해결법을 공유하려 한다. z축 조절 Layer 변경 결론만 빠르게 보고 싶다면 스크롤을 내려 결론 탭을 찾아가면 좋다. 환경 우선 문제 발생 당시 인벤토리 환경은 다음과 같았다. 하나의 캔버스 내에 인벤토리에 Grid Layout Group을 넣고, 그 아래 슬롯 오브젝트를 30개 배치했다. 모두 같은 오브젝트며, 슬롯은 아이콘을 띄울 Slot Item과 상세정보를 띄울 Info가 순서대로 배치돼있다. Info는 Slot의 자식 오브젝트이기에 캔버스를 분리할 순 없었다. 시..
[Unity] 함수 내 충돌 처리(isTouching , OverlapBox) 서론 유니티에서 충돌 처리를 위해 OnTriggerEnter, OnCollisionEnter등을 쓰는 경우는 매우 많다. 하지만 이 함수들의 단점은, 충돌이 일어났을 때 함수를 실행한다는 점이다. 즉, 기존에 쓰던 함수 내에서 따로 충돌 처리를 할 수 없다는 점이다. 나 같은 경우엔, 다음과 같은 일이 있었다. 더보기 플레이어와 닿을 시 점수 오브젝트를 랜덤한 위치로 옮긴다. 옮겨진 위치에 똑같은 점수 오브젝트가 있을 경우, 다시 위치를 옮긴다. 그렇게 점수 오브젝트끼리 겹치는 일을 없앤다. 지금까진 OnTriggerEnter를 사용해 해당 일을 처리했는데, 새로 생성된 오브젝트 뿐만이 아닌, 기존에 그 자리에 있던 오브젝트도 위치가 변한다는 단점이 있었다. 이는 점수를 먹으려던 플레이어에게 부정적인 경..
[Unity] InputAction 내 이벤트 초기화 InputAction 내의 이벤트들을 모두 지워야하는 상황이 있었다. InputAction 클래스의 메소드를 살펴보니, 다음과 같은 두 함수가 있었다. inputAction.Reset(); inputAction.RemoveAction(); 직접 실험해본 결과, inputAction.RemoveAction(); 함수는 해당 InputAction의 모든 Actions를 삭제하는 함수였다. inputAction.Reset(); 함수는 inputAction 내의 등록된 이벤트들을 깔끔하게 지워주는 함수였다. 씬이 넘어갈 때 오브젝트가 사라지더라도 등록된 Input 이벤트들은 그대로였다. 유지할 필요없다면 Reset() 함수로 지워주자.
[Unity] DOTween - 회전하지 않고 물체 주위 맴돌기 ※본 글에서는 유니티 에셋 스토어의 DOTween (HOTween v2) 무료 버전을 사용합니다. ※본 글에선 DOTween 에셋의 설치 및 사용법에 대해선 다루지 않습니다. 먼저, 스프라이트와 버튼 하나를 생성하겠습니다. 결과를 잘 보여주기 위해 버튼으로 했지만, 스프라이트나 다른 오브젝트로 만들어도 상관 없습니다. 하이어라키 창에서 우클릭 - Create Empty로 빈 오브젝트를 생성한 후, 이름을 Button Object로 바꿔줬습니다. 미리 생성해둔 버튼을 Button Object 아래에 넣어 자식 오브젝트로 만들어줍니다. ※자식 오브젝트로 넣기 전, 인스펙터 창에서 Button Object의 Transform 컴포넌트 조정해, 반드시 위치를 0, 0, 0으로 만들어줍니다. Button Obje..