이동 애니메이션 디테일현재 걷는 모션과 뛰는 모션 사이 그리고 걷는 모션과 멈추는 모션의 사이 등이 조금 어색한 부분이 있다.걷기에서 뛰기로 모션이 전환될 때 너무 빠르게 전환되는 문제나 멈출 때 등 어색한 부분을 개선해 보자.그리고 점프에서도 어색한 부분이 있다. 걷기 애니메이션현재 걷는 모션에서 뛰는 모션으로 전환될 때 너무 빠르게 전환되어 속도가 갑자기 변하는 것처럼 끊겨보이는 느낌이 든다.if (!animator.IsUnityNull()){ _animSpeed = Mathf.Lerp(_animSpeed, _targetSpeed, Time.deltaTime * playerMovementData.speedChangeRate); animator.SetFloat(SpeedAnimID, ..
전체 글
문제 설명어떤 수열이 다른 수열의 부분 수열이라는 것은 다음을 의미합니다.해당 수열의 원소들이 다른 수열 내에서 순서대로 등장합니다.예를 들어, $\{1,1,5\}$는 $\{3,\underline{\color{blue} 1} ,4,\underline{\color{blue} 1} ,\underline{\color{blue} 5} ,9\}$의 부분 수열이지만, $\{1,5,1\}$의 부분 수열은 아닙니다.또한, 어떤 수열이 다른 수열보다 사전 순으로 나중이라는 것은 다음을 의미합니다.두 수열 중 첫 번째 수가 큰 쪽은 사전 순으로 나중입니다.두 수열의 첫 번째 수가 같다면, 첫 번째 수를 빼고 두 수열을 다시 비교했을 때 사전 순으로 나중인 쪽이 사전 순으로 나중입니다.길이가 $0$인 수열과 다른 수열을 비..
이동 애니메이션이전까지 만든 이동 로직에 애니메이션을 추가하고 디테일을 잡아보자. 스프린트shift에 스프린트를 넣어 이동속도를 빠르게 만들어보자.PassThrough로 설정해 눌려있는 상태에서만 켜지도록 설정해 준다.public void OnSprint(InputValue value){ sprint = value.isPressed;}이후 입력 콜백을 구현하여 sprint라는 변수를 변경하도록 설정한다.private void Move(){ _targetSpeed = parkourInputController.sprint ? playerMovementData.sprintSpeed : playerMovementData.moveSpeed; ...이후 Move에서 sprint 여부에 따라 ..
캐릭터 이동 구현분석한 내용을 직접 구현해 보자. 구조구조는 유사하게 Input을 처리하는 스크립트와 이를 참조하여 캐릭터를 제어하는 구조로 설계하였다.이동 관련한 데이터는 따로 SO로 분리하여 관리하려 한다. 이동이동부터 구현해 보자.흐름을 정리하자면 다음과 같다.입력 방향의 각도를 구한다 = Atan2카메라 회전 각도를 구한다 = camera eulerAnge.y둘을 합해 최종 캐릭터 회전 방향을 구해 회전시킨다현재 이동 속도를 구한다현재 속도가 유효 범위밖이라면 속도를 조정한다 = Lerp최종 이동 = 수평, 수직 포함 입력 방향에 대한 각도를 구하는 것은 Atan2와 Reg2Deg를 통해 구해내면 된다.이후, 카메라의 회전은 mainCamera의 참조에서 transform을 받아와 ..
문제 설명자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어지는 자두를 받아서 먹고는 한다. 자두를 잡을 때에는 자두가 허공에 있을 때 잡아야 하는데, 이는 자두가 말랑말랑하여 바닥에 떨어지면 못 먹을 정도로 뭉개지기 때문이다.매 초마다, 두 개의 나무 중 하나의 나무에서 열매가 떨어지게 된다. 만약 열매가 떨어지는 순간, 자두가 그 나무의 아래에 서 있으면 자두는 그 열매를 받아먹을 수 있다. 두 개의 나무는 그다지 멀리 떨어져 있지 않기 때문에, 자두는 하나의 나무 아래에 서 있다가 다른 나무 아래로 빠르게(1초보다 훨씬 짧은 시간에) 움직일 수 있다. 하지만 자두는..
캐릭터 이동3인칭 캐릭터 이동에 대해서는 이전에 다룬 적이 있지만 이번에는 파쿠르 시스템을 개발하고 애니메이션 보간 등을 자연스럽게 처리하는 방식을 연구하려 한다.가장 기본이 되는 이동부터 구현해 보자.유니티에서 제공하는 튜토리얼 코드를 분석해보며 적용해 보자. Controllerusing UnityEngine;#if ENABLE_INPUT_SYSTEMusing UnityEngine.InputSystem;#endif/* Note: animations are called via the controller for both the character and capsule using animator null checks */namespace StarterAssets{ [RequireComponent(..
문제 설명지훈이는 최근에 혼자 하는 카드게임을 즐겨하고 있다. 게임에 사용하는 각 카드에는 양의 정수 하나가 적혀있고 같은 숫자가 적힌 카드는 여러 장 있을 수 있다. 게임방법은 우선 짝수개의 카드를 무작위로 섞은 뒤 같은 개수의 두 더미로 나누어 하나는 왼쪽에 다른 하나는 오른쪽에 둔다. 그리고 빈 통을 하나 준비한다. 이제 각 더미의 제일 위에 있는 카드끼리 서로 비교하며 게임을 한다. 게임 규칙은 다음과 같다. 지금부터 왼쪽 더미의 제일 위 카드를 왼쪽 카드로, 오른쪽 더미의 제일 위 카드를 오른쪽 카드로 부르겠다.언제든지 왼쪽 카드만 통에 버릴 수도 있고 왼쪽 카드와 오른쪽 카드를 둘 다 통에 버릴 수도 있다. 이때 얻는 점수는 없다.오른쪽 카드에 적힌 수가 왼쪽 카드에 적힌 수보다 작은 경우에는..