Menu
CoddyTech

달리는 사람

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 75번째.

이 장에서는 작은 게임인 Dodge the Blocks를 만듭니다. 블록이 하늘에서 떨어지는 동안 레인을 따라 달리는 캐릭터를 조종하며, 블록에 한 번 닿으면 달리기가 끝납니다. 게임 전체는 하나의 스크립트인 Runner로 구성되며, 각 수업에서 조종, 블록 낙하, 블록 정리, 충돌, 점수 기능을 하나씩 추가합니다.

첫 번째 기능은 레인 안에서 벗어나지 않도록 조종하는 것입니다. Catch the Star에서 사용한 Mathf.Clamp(value, min, max)를 이용합니다. 이 함수는 값이 범위보다 작으면 min을, 범위보다 크면 max를 반환하고, 그렇지 않으면 값 자체를 반환합니다. Clamp를 어디에 적용하는지가 중요합니다. 이 충전 미터는 Space를 누르고 있는 동안 차오르고, 누르지 않으면 줄어들며, 항상 0에서 10 사이를 벗어나지 않습니다.

[SerializeField] private float charge = 0f;

void Update()
{
    if (Input.GetKey(KeyCode.Space))
    {
        charge += 4f * Time.deltaTime;
    }
    else
    {
        charge -= 2f * Time.deltaTime;
    }
    charge = Mathf.Clamp(charge, 0f, 10f);
    transform.localScale = new Vector3(0.5f, charge, 0.5f);
}

Clamp는 값이 바뀐 다음에 적용합니다. 먼저 Clamp를 적용하면 값이 프레임이 끝날 때 제한을 조금 넘어설 수 있고, 막대도 그 값으로 그려집니다. Mathf.Clamp는 전달한 변수를 바꾸는 대신 새 숫자를 반환하므로, 결과를 다시 변수에 대입해야 합니다.

challenge icon

챌린지

중급

블록 피하기를 시작하고, 주자를 레인 안에서 조종하세요.

  1. Update()에서 transform.position을 Vector3 p에 복사하고, Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime를 p.x에 더하세요. 원시 축 입력은 즉시 최고 속도로 이동시킵니다.
  2. p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);를 설정한 다음, transform.position = p;를 설정하세요.

‘플레이’를 누르고 게임을 클릭한 뒤 양쪽 끝까지 달려 보세요. 주자가 가장자리에서 멈춥니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;

    void Update()
    {
        // 화살표 키로 x축을 따라 이동한 다음, x가 레인 안에 머물도록 합니다
    }
}

Unity 스크립팅 기초의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드