Menu
CoddyTech

아레나

Coddy Unity 여정의 물리와 게임플레이 섹션에 포함된 레슨. 63개 중 56번째.

이 장에서는 Arena Escape를 만듭니다. 벽으로 둘러싸인 경기장에서 사냥꾼들을 피하고, 사냥꾼들이 무리 지어 몰려오며, 세 번 맞으면 게임이 끝나고, 마지막 웨이브가 지나가면 출구가 열립니다. 게임은 처음부터 프로젝트에 있는 다섯 개의 스크립트로 이루어져 있습니다: Player, Hunter, Spawner, Health, Exit. 마지막 네 개는 지금은 비어 있으며, 각 강의에서 하나씩 채웁니다.

플레이어는 속도를 직접 설정하는 대신 힘으로 움직이므로, 사냥꾼의 넉백은 움직임을 지워버리는 대신 플레이어의 움직임에 더해집니다. 밀기만 하면 속도가 영원히 빨라지므로, linearDamping은 매 단계마다 속도의 일부를 줄입니다. 일정하게 밀면 최고 속도는 가속도를 감쇠로 나눈 값 정도에서 안정됩니다. 이 호버 썰매는 Space 키를 누르고 있는 동안 앞으로 나아갑니다:

[SerializeField] private float accel = 12f;
private Rigidbody rb;

void Start()
{
    rb = GetComponent<Rigidbody>();
    rb.linearDamping = 2f;
}

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.Space))
    {
        rb.AddForce(transform.forward * accel, ForceMode.Acceleration);
    }
}

가속도가 12이고 감쇠가 2이면, 썰매의 최고 속도는 초당 약 6유닛입니다. Space 키에서 손을 떼면 감쇠가 썰매를 멈추게 하므로, 영원히 미끄러져 나아가지 않습니다. ForceMode.Acceleration은 질량을 무시하므로, 무거운 썰매도 가벼운 썰매와 정확히 똑같이 가속합니다. 썰매의 콜라이더에는 마찰이 없는 PhysicsMaterial이 적용되어 있습니다. 바닥의 마찰까지 감쇠에 더해지면 최고 속도는 더 낮아집니다.

challenge icon

챌린지

중급

플레이어와 함께 Arena Escape를 시작하세요. Inspector에서 Player 스크립트에 accel(18)과 topSpeed(6)를 지정합니다. 플레이어의 질량은 2이고 마찰이 없는 재질을 사용하며, 나머지 네 스크립트는 지금은 비워 둡니다.

  • Start에서 Rigidbody의 linearDamping을 accel / topSpeed로 설정하여 플레이어의 속도가 약 topSpeed에서 더 이상 증가하지 않도록 합니다.
  • 매 물리 업데이트마다 ForceMode.Acceleration과 accel만큼의 가속도를 사용해 화살표 키 방향으로 플레이어를 밀어 움직입니다. 왼쪽과 오른쪽은 x축을 따라, 위쪽과 아래쪽은 z축을 따라 움직입니다.
  • 화살표 키 방향을 정규화하여 대각선으로 움직여도 직선으로 움직일 때보다 더 빠르지 않도록 합니다.

Play를 눌러 경기장을 돌아다닌 다음 Check를 누르세요.

직접 해보기

using UnityEngine;

public class Player : MonoBehaviour
{
    [SerializeField] private float accel = 18f;
    [SerializeField] private float topSpeed = 6f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // 감쇠를 설정한 다음 방향키로 플레이어를 움직입니다
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

물리와 게임플레이의 모든 레슨