Menu
CoddyTech

움직이는 플랫폼

Coddy Unity 여정의 실제 게임 만들기 섹션에 포함된 레슨. 56개 중 49번째.

challenge icon

챌린지

중급

파란색 플랫폼은 틈 위를 앞뒤로 미끄러져 이동해야 합니다. 지난 레슨의 내용을 모두 그대로 유지하세요.

MovingPlatform을 완성하세요:

  • Inspector에서 설정하는 두 필드인 distance(3)와 speed(1.5), 그리고 public Vector3 delta를 추가합니다.
  • 시작 위치에서 +x 방향으로 distance 단위만큼 speed 단위/초의 속도로 미끄러져 이동한 다음, 시작 위치로 돌아오기를 계속 반복합니다.
  • 매 프레임 delta는 그 프레임에 이동한 거리입니다. 즉, 이동 후 위치에서 이동 전 위치를 뺀 값입니다.

CharacterController는 자신이 서 있는 물체에 실려 이동하지 않습니다. 움직이는 플랫폼 위에 있어도 제자리에 머물고, 플랫폼이 아래에서 미끄러져 나갑니다. transform.position을 이동시키는 방법도 통하지 않습니다. 다음 Move는 물리 시스템이 마지막으로 컨트롤러를 감지한 위치에서 시작하며, 변경 사항을 되돌립니다. Player가 플랫폼을 따라 이동하도록 만드세요:

  • OnControllerColliderHit을 추가합니다. 충돌면의 법선이 위를 향하고(hit.normal.y가 0.5 초과: 플레이어가 그 위에 서 있음), 해당 오브젝트에 MovingPlatform이 있으면 그 플랫폼을 필드에 저장합니다.
  • Update에서 해당 플랫폼의 delta를 controller.Move에 전달하는 이동량에 더한 다음, 플랫폼을 잊도록 필드를 null로 설정합니다. 플레이어가 그 위에 서 있는 동안에는 Move 호출이 플랫폼을 다시 찾습니다.

Play를 누르고 플랫폼 위로 점프해 올라타 이동한 다음, Check를 누르세요.

직접 해보기

using UnityEngine;

public class MovingPlatform : MonoBehaviour
{
    // 이후 수업에서 이 부분을 채웁니다: 앞뒤로 부드럽게 움직이는 플랫폼입니다.
}

실제 게임 만들기의 모든 레슨