받는 사람
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 50번째.
이 장에서는 각 수업에서 하나의 기능씩 구현하며 작은 게임인 별 잡기를 만듭니다. 별이 떨어지고, 별 아래에서 받침대를 좌우로 움직이며, 별을 잡을 때마다 점수를 얻고 다음 별은 더 빠르게 떨어집니다. 별을 세 번 놓치면 게임이 끝납니다. 이 모든 기능은 받침대에 있는 하나의 스크립트 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를 적용하면 어떤 프레임에서도 오브젝트가 한계를 벗어나 보이지 않습니다.
챌린지
중급파란 막대인 받이에게 움직임을 추가하세요.
Update()에서transform.position.x를float x에 복사한 다음, 누르고 있는 화살표 키에 따라speed * Time.deltaTime을 더하거나 빼세요.- 바닥에서 너비가 2단위인 받이를 유지하세요(x 범위는 -5부터 5까지):
x = Mathf.Clamp(x, -4f, 4f);. x를transform.position에 다시 넣고 y와 z는 유지하세요.
‘플레이’를 누르고 화살표 키를 누른 채로 있으면 가장자리에서 멈춥니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Catcher : MonoBehaviour
{
[SerializeField] private float speed = 6f;
void Update()
{
// 화살표 키: x축을 따라 초당 speed 단위만큼 이동합니다.
// 캐처 전체가 바닥 위에 있도록 유지합니다(x는 -5부터 5까지, 캐처의 너비는 2).
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드