잡는 사람
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 36번째.
이 장에서는 작은 게임인 Catch the Star를 만들며, 레슨마다 기능 하나씩 추가합니다. 별이 떨어지고, 그 아래에서 받침대를 좌우로 움직여 별을 받습니다. 별을 받을 때마다 점수를 얻고 다음 별은 더 빨리 떨어지며, 세 번 놓치면 게임이 끝납니다. 이 모든 기능은 받침대에 있는 하나의 스크립트 Catcher로 구현합니다. 첫 번째 기능은 이동입니다. 받침대는 화살표 키로 움직이며 바닥을 벗어나지 않습니다.
숫자를 범위 안에 유지하는 데는 Mathf.Clamp(value, min, max)를 사용합니다. 값이 min보다 작으면 min을, max보다 크면 max를 반환하고, 그 외에는 값 자체를 반환합니다. 이 카메라는 플레이어를 따라 탑 위로 올라가지만, 높이는 2와 12 사이에 유지됩니다.
[SerializeField] private Transform player;
void Update()
{
float y = Mathf.Clamp(player.position.y, 2f, 12f);
transform.position = new Vector3(transform.position.x, y, transform.position.z);
}Clamp는 새 숫자를 반환할 뿐, 그 자체로는 아무것도 바꾸지 않으므로 결과를 대입해야 합니다. 프레임의 모든 변경을 마친 뒤 위치를 다시 쓰기 전에 Clamp를 적용하면, 어떤 프레임에서도 오브젝트가 한계를 넘어선 상태로 표시되지 않습니다.
챌린지
중급캐처(파란색 막대)를 움직이게 하세요. 오른쪽 화살표를 누르고 있으면 오른쪽(+x 방향)으로 미끄러지고, 왼쪽 화살표를 누르고 있으면 왼쪽으로 미끄러지며, 두 경우 모두 초당 speed 단위로 이동합니다. y와 z는 절대 변하지 않습니다.
바닥은 x = -5부터 x = 5까지 이어지고 캐처의 너비는 2단위입니다. 캐처 전체가 항상 바닥 위에 있도록 x를 제한하세요.
Play를 누르고 게임을 클릭한 다음 화살표 키를 사용해 보고, Check를 누르세요.
직접 해보기
using UnityEngine;
public class Catcher : MonoBehaviour
{
[SerializeField] private float speed = 6f;
void Update()
{
// 화살표 키: x축을 따라 초당 speed 단위만큼 이동합니다.
// 캐처 전체가 바닥 위에 있도록 유지합니다(x는 -5부터 5까지, 캐처의 너비는 2).
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.