복습: 가장 가까운 상호작용 대상
Coddy Unity 여정의 Unity 게임 아키텍처 섹션에 포함된 레슨. 64개 중 11번째.
이 장에서는 인터페이스를 사용해 메서드 하나만 공유하는 서로 아무런 공통점이 없는 대상들과도 하나의 스크립트가 작동하도록 했습니다. 이제 상호작용 키를 누르면 그중 가장 가까운 대상을 선택합니다.
챌린지
쉬움스페이스 키를 누르면 첫 번째 대상이 아니라 가장 가까운 대상을 사용해야 합니다.
Interactor에서 반복문 앞에IInteractable nearest = null;과float best = Mathf.Infinity;를 추가하세요.- 반복문에서 플레이어와의
Vector3.Distance가best보다 작은 대상과 그 거리를 저장하세요. - 반복문이 끝난 후
nearest가 null이 아니면nearest.Interact()를 호출하세요.
‘플레이’를 누르고, 상자와 레버 사이에 선 다음 스페이스 키를 누르세요. 레버가 당겨집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
using UnityEngine.InputSystem;
// Space를 누르면 닿을 수 있는 범위 내의 첫 번째 대상과 상호작용합니다.
public class Interactor : MonoBehaviour
{
public float reach = 1.5f;
void Update()
{
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
foreach (Collider c in Physics.OverlapSphere(transform.position, reach))
{
if (c.TryGetComponent(out IInteractable thing))
{
thing.Interact();
return;
}
}
}
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Unity 게임 아키텍처의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드