unity(35)
-
[압량(Amnyang)] #4. 키 입력을 받아 2D 캐릭터 좌우 이동 구현하기
Walk 애니메이션도 생겼겠다. 이제 캐릭터 좌우 이동을 구현할 차례다. 2D 게임이긴 하지만, 지금 개발하는 게임은 상하 이동은 요구되지 않는다. 그래서 간단하게 좌우 이동만 먼저 구현해보기로 했다. Rigidbody 2D의 Velocity(속도)를 통해 좌우 이동 구현 Walk, Idle 애니메이션을 적절한 타이밍에 사용해주기 Transform의 Scale의 X 값의 부호를 바꿔서 캐릭터가 바라보는 방향 전환 구현 1. 키 입력 받기 Girl Controller라는 스크립트를 하나 만들어서 Character 오브젝트에 부착해줬다. 키 입력은 유니티에서 제공하는 Input.GetAxisRaw() 함수를 사용하여 받을 계획이다. Input.GetAxisRaw("Horizontal")로 매개변수로 주면 다..
2022.01.22 -
[압량(Amnyang)] #3. 2D 주인공 캐릭터 Idle, Walk, EyeBlink 애니메이션 클립 만들기
이전 글에서 눈 부위는 따로 머리 뼈대(Head Bone) 자식 오브젝트로 달아줬었는데, 원래라면 눈도 포토샵 작업에서 따로 레이어(Layer)를 나눠서 한 PSB 파일에 같이 있는 게 좋긴 하다. /* 뼈대 자식으로 넣어주지 않으면, 뼈대가 움직일 때 해당 오브젝트는 같이 움직이지 않는다. */ 그런데, 기존에는 눈 깜빡임을 구현할 생각이 없었는데 좀 더 사실적인 연출을 위해 넣어야 하다보니 디자이너님께서 다시 재작업을 해야하는 상황이 일어났다. 그러는 과정에서 눈이 없는 캐릭터 파일과 눈만 따로 있는 파일 2개를 받게 된 것이다. /* 이전 글에서 눈이 처음에 없었던 이유였다. */ 음.. 일단 이걸로 눈 깜빡임을 구현해보자. 1. 눈 깜빡임 애니메이션 및 랜덤 깜빡임 스크립트 제작 눈 깜빡임 애니메..
2022.01.21 -
[압량(Amnyang)] #2. 2D Bone Animation으로 주인공 애니메이션 제작하기
디자이너님께 오늘 최종 완성된 주인공 캐릭터 리소스를 받았다. 그동안은 주인공 중간 완성본을 가지고 연습했는데, 드디어 본 작업을 진행할 수 있을 것 같다. 심혈을 기울여서 한 번 만들어보자! 1. 뼈대(Bone) 작업 및 메시(Mesh) 생성 작업하기 먼저 캐릭터 리소스를 PSB 파일로 유니티에 받아와서, Skinning Editor에서 편집을 시작했다. 우선, 캐릭터의 움직임에 기반이 될 뼈대 생성 작업부터 해줬다. 각 레이어별로 기반이 될 메인 뼈대를 하나씩 지정해줬다. 예를 들면, 머리 레이어라면 머리 뼈, 오른쪽 팔 레이어라면 윗팔뼈를 루트(Root)로 시작하여 손뼈까지 내려가는 등의 작업을 진행해줬다. 사람의 몸의 특성상, 몸통이 움직이면 목, 머리, 팔, 다리가 다 움직일 수 밖에 없다. 그..
2022.01.21 -
[Unity] OnTriggerStay() 함수: 오브젝트의 변화가 감지되지 않으면 더 이상 호출되지 현상 해결법
적(Enemy) 게임 오브젝트에 탐지(Detect)를 담당하는 콜라이더를 달아 플레이어가 현재 적 오브젝트 탐지 영역 안에 있는지 체크하는 로직을 구현하려고 했었다. 탐지만 하고, 충돌 처리는 하면 안 되니 콜라이더의 Is Trigger 모드를 활용했다. 구현하고자 했던 로직 및 준비 작업 적은 평상시 상태(Idle)로 여기 저기를 돌아다님 플레이어가 적의 탐지 영역에 처음 들어온다면, 적은 경계 모드로 돌입 플레이어가 계속 적의 탐지 영역에 2초 이상 머무르고 있다면, 빠르게 돌진하여 공격하는 공격 모드 돌입 적이 공격 모드로 돌입 전에 탐지 영역에서 나간다면, 다시 평상시 상태로 돌입 리소스는 없고, 로직만 먼저 구현해보려고 해서 캡슐을 적(Enemy), 사각형을 플레이어(Player)로 설정했다. ..
2022.01.19 -
[Unity] Universal RP를 이용한 2D 빛(Light) 처리
/* 본 글은 Unity 2020.3.25f1 LTS 버전을 기반으로 작성되었습니다. */ 유니티 2D 프로젝트에서 일반적인 방법으로는 조명 처리가 되지 않는다는 사실을 발견했다. 구글에 검색 해보며 찾아보니, 2D에서는 빛(Light)이 존재하는 것이 아니라 빛을 흉내내는 여러 기법들로 표현을 해왔다고 한다. 광원에 가까이 있는 정점(Vertex)은 밝게 하고, 멀리 있는 정점은 어둡게 하거나 Material의 Shader 설정을 "Sprite/Diffuse"로 바꿔주는 등의 기법을 통해 빛의 처리를 표현해왔다고 한다. 그런데, 유니티 2D에서도 이제 빛 처리에 대한 패키지를 지원을 한다. URP(Universal Render Pipeline)이다. 이전 버전은 경량 렌더 파이프라인(LWRP)이라고 불..
2022.01.18 -
[Unity] 최적화를 위한 게임 오브젝트 태그(Tag) 비교 방법
태그(Tag)란? 유니티를 사용하다 보면, 스크립트에서 태그(Tag)를 이용해서 원하는 게임 오브젝트인지를 판별할 때가 자주 있다. 하지만 태그를 사용해서 비교를 하더라도 자칫 잘못하면 가비지 메모리를 잔뜩 생성할 수도 있다는 글을 본 적이 있다. 1. CompareTag() 메서드를 이용한 비교 (권장) pirvate void OnTriggerEnter2D(collider2D collision) { if(collision.CompareTag("Player")) //CompareTag() 메서드를 활용한 비교 { ... } } 2. string 문자열을 이용한 비교 (권장하지 않음) private void OntriggerEnter2D(collider2D collision) { if(collision.t..
2022.01.17