Menu
CoddyTech

아이템 획득

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

아이템 획득 오브젝트는 자체 스크립트가 있는 트리거입니다. 무언가가 들어오면 아이템 획득 오브젝트는 그것이 플레이어인지 확인하고, 효과를 전달한 다음 자신을 파괴합니다. 플레이어의 스크립트는 결과를 보관하고 이를 위한 public 메서드를 제공합니다. 이 체력 팩은 Health 스크립트가 있는 모든 대상을 치유합니다:

// HealthPack.cs
public int amount = 25;

void OnTriggerEnter(Collider other)
{
    if (other.TryGetComponent(out Health health) && health.hp < 100)
    {
        health.Heal(amount);
        Destroy(gameObject);
    }
}
// Health.cs, 플레이어에 부착
public int hp = 50;

public void Heal(int amount)
{
    hp = Mathf.Min(hp + amount, 100);
    Debug.Log("HP: " + hp);
}

other.TryGetComponent(out Health health)는 팩에 미끄러져 들어온 상자에 대해 false이므로, Health 스크립트가 있는 오브젝트만 팩을 획득할 수 있으며, 체력이 가득 찬 플레이어는 나중을 위해 팩을 남겨 둡니다. 팩은 other를 통해 플레이어를 찾으므로 Inspector 참조가 필요한 팩은 없으며, 한 레벨에 팩을 50개 둘 수 있습니다. 다른 스크립트가 Heal을 호출하므로 public이며, 체력 상한인 100은 hp를 관리하는 단 하나의 곳인 Health에 설정되어 있습니다. Destroy(gameObject)는 팩을 제거합니다. Destroy(other.gameObject)를 사용하면 플레이어가 제거됩니다.

challenge icon

챌린지

쉬움

플레이어는 Blaster를 가지고 있습니다. 여기에는 ammo(시작 시 4)와 maxAmmo(10)가 있습니다. 화살표 키로 이동하고 Space로 발사하며, 두 값 모두 기록됩니다. 탄약 상자에서 탄약을 보충하도록 만드세요:

  • Blaster.cs에서 공개 메서드 int AddAmmo(int amount)를 추가하세요. amount 중 maxAmmo를 넘지 않는 만큼 가져오고, Ammo: 7과 같은 새 총량을 기록한 다음 가져온 양을 반환합니다.
  • AmmoCrate.cs에서 플레이어가 상자에 들어오면 상자의 amount를 Blaster에 제공하고 가져간 양만큼 빼세요. 비어 있는 상자는 제거하고, 탄약이 남아 있는 상자는 남은 양을 유지한 채 다음에 방문할 때까지 그대로 둡니다.

첫 번째 상자에는 3, 두 번째 상자에는 5가 들어 있습니다. Play를 누르고 오른쪽으로 걸어가 몇 발 발사한 다음 두 번째 상자로 돌아가 들어가고, Check를 누르세요.

직접 해보기

using UnityEngine;

public class AmmoCrate : MonoBehaviour
{
    public int amount = 3;

    void OnTriggerEnter(Collider other)
    {
        // 플레이어의 Blaster는 담을 수 있는 만큼 가져가고, 상자는 나머지를 보관하다가 비면 사라진다
    }
}
quiz icon실력 점검

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

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