unity(35)
-
[압량(Amnyang)] #6. 2D 주인공 캐릭터 달리기(Run) 애니메이션 추가하기
학교에서 일주일간 진행했던 게임 교육 특강을 듣고, 설 연휴도 겹쳐서 작업 스케쥴이 다소 밀렸다. 설 연휴가 끝난 후에 회의를 진행했고, 프로젝트 종료일인 2월 말까지 얼마 남지 않은 탓에 세부적인 디테일은 포기하기로 했다. 캐릭터가 숨는 모션, 적이 찾는 시늉을 하는 모션, 문 열리거나 상호작용하는 모션 등이 있으면 게임 완성도는 올라가지만 시간이 부족하다. 디자이너 님도 한 분밖에 없다보니 UI와 배경작업도 하셔야 하는데 그거까지 할 시간이 없으실 것 같다. 그래서, 우선 게임 플레이에 필수적인 요소들만 먼저 빠르게 구현하기로 했다. 저번 글에서 주인공 캐릭터의 Idle, Walk 애니메이션을 작업했는데, 다음 애니메이션은 달리기(Run)다. 1. 달리기(Run) 애니메이션 제작하기 걷기(Walk)를..
2022.02.05 -
[Unity] 클릭(터치)한 화면 좌표로 캐릭터 이동 시키기
모바일 게임에서 캐릭터 이동 방식에는 여러 가지가 있다. 조이스틱(Joystick)을 사용하기도 하지만, 조작감이 불편해서 화면 터치를 많이 사용하고 있는 추세라고 한다. PC 게임에서도 LOL이나 스타크래프트 같은 경우, 마우스를 통해 화면의 원하는 지점으로 캐릭터를 이동 시키는 방식을 쓴다. 원리 카메라가 보여주는 영역에 터치를 하면, Raycast처럼 가상의 광선을 쏜다. 광선에 닿은 바닥의 좌표값을 받아내서, 캐릭터를 해당 좌표로 이동 시킨다. 즉, 스크린 좌표계에서 월드 좌표계로의 값 변환 과정이 필요하다. 바닥에 콜라이더(Collider) 컴포넌트가 있어야 광선에 부딪히므로 반드시 넣어줘야 한다. 장애물이 존재한다면, 길찾기 알고리즘을 추가로 적용해줘야 한다. 아니면 네비게이션을 사용하는 방법..
2022.02.01 -
[Unity] 그래픽 최적화를 하는 방법들 (Low Polygon, Clipping Planes, Occlusion Culling)
게임 개발을 진행할 때, 처음에는 별 문제없이 잘 진행되다가 마지막에 테스트를 할 때 문제가 많이 발생한다고 한다. 그 중 하나가 바로 최적화 문제이다. 보통 성능이 좋은 컴퓨터에서 유니티를 통해 개발을 진행하기 때문에 프레임 드랍이나 속도 측면에서 문제가 있는 것을 알아차리기는 어렵다. 그러다가 나중에 베타 테스트 기간동안 성능이 떨어지는 컴퓨터나 모바일에서 구동했을 때 문제가 있음을 깨닫게 된다고 한다. 그래서 그 중, 그래픽에 의해 발생하는 프레임 드랍을 해결하는 방법을 알아봤다. 그래픽 최적화를 하는 기법들 1. 3D 모델링의 폴리곤(Polygon) 개수를 줄이는 방법 (디자인 영역) 디자이너 분들이 3D 모델링 작업을 할 때, 폴리곤(Polygon)을 통해 3D 모델 개체의 표면을 구성한다. 이..
2022.01.30 -
[Unity] New Input System #2 | 키 입력을 스크립트에 전달하여 처리하기
저번 글에서 기본적인 셋팅을 끝냈었다. 이번 글에서는 입력값을 스크립트(script)에 전달하는 방식 중 2가지 정도를 사용하여 로직을 제어하는 걸 해보고자 한다. Player 게임 오브젝트에 Player Input 컴포넌트를 부착했었다. 키를 입력했다면, 키보드로 들어온 입력값을 주인공 캐릭터에게 전달해줘야 한다. 1. 로직을 제어할 스크립트(script) 부착하기 Player 게임 오브젝트에 키 입력값을 전달받고, 해당 로직을 제어할 스크립트를 만들어서 붙여줬다. Send Messages, Broadcast Messages : 유니티의 Send Message 기능을 사용하여 특정 함수를 호출하는 방식 Invoke Unity Events, Invoke C Sharp Events : 유니티나 C#의 이벤..
2022.01.26 -
[Unity] New Input System #1 | 세팅하기
/* 수업 들으며 했던 내용들을 실습해보며 정리한 글입니다. 잘못된 부분이 있다면 말씀해주세요. */ 게임은 특정 플랫폼 하나만을 겨냥하고 개발하는 경우는 거의 없다. 스케일이 커지게 되면 PC 말고도 모바일, 콘솔 등의 플랫폼도 지원을 해야 할텐데, 그 중에서도, 기존 Unity Input System은 게임 플랫폼 환경 서비스를 추가할 때 골머리를 앓게하는 요소라고 한다. PC에서는 키보드와 마우스, 모바일은 화면 터치, 콘솔에서는 조이스틱을 이용하는 등 플랫폼마다 사용하는 입력 방식이 다르기 때문이다. 즉, 다음과 같이 코드를 짜게 되면 플랫폼 추가 확장할 때 게임 Input System을 수정해야 하는 번거로움이 생긴다. if(Input.GetKey(KeyCode.UpArrow)) // PC에서 ..
2022.01.26 -
[압량(Amnyang)] #5. 2D에서 Y축 회전을 통한 문 열리고 닫는 효과 구현하기
캐릭터 애니메이션들도 고민을 많이 했지만, 사실 그만큼 또 걱정됐던 게 문 열리고 닫히는 애니메이션이었다. 페이지 애니메이션을 사용하기엔 디자이너님이 바빴고, 2D Bone Animation으로는 Z축 방향쪽(화면 안 ~ 화면 밖)으로의 회전을 구현할 수가 없었다. 그래서 공부를 하며 찾아보다가, 그냥 Y축으로 90도 회전하는 게 제일 그럴 듯하게 구현할 수 있겠다는 결론을 내렸다. 문이 연결된 경첩 쪽 위치를 기준으로 Y축 90도 회전 (문 열리고 닫히는 효과 구현) 레이어 렌더링 우선순위 설정 1. 문의 회전축 기준 위치 설정하기 유니티 오브젝트는 기본적으로 자신의 피벗(Pivot)을 기준으로 연산을 진행한다. 위치, 회전, 크기 등등 이 피벗 포인트 위치를 시작 기준으로 설정한다는 소리다. 하지만 ..
2022.01.22