Menu
CoddyTech

OnTriggerEnter

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

void OnTriggerEnter(Collider other)는 다른 콜라이더가 트리거와 겹치기 시작하는 물리 단계에서 한 번 실행됩니다. other는 해당 콜라이더이므로 other.name, other.gameObject, other.CompareTag("Player")를 통해 무엇이 들어왔는지 알 수 있습니다. Unity는 두 오브젝트의 스크립트에서 이 메서드를 호출합니다. 트리거에서는 other가 들어온 오브젝트이고, 들어온 오브젝트에서는 other가 트리거입니다.

이 결승선은 플레이어에만 반응하고 다른 어떤 것에도 반응하지 않으므로, 공이 결승선을 지나가도 아무것도 기록되지 않습니다.

void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player"))
    {
        Debug.Log(other.name + " crossed the finish line");
    }
}

매개변수는 Collider여야 합니다. void OnTriggerEnter(Collision collision)로 작성해도 C#에서는 일반 메서드이므로 스크립트가 컴파일됩니다. Unity는 매개변수 자체를 확인하고 This message parameter has to be of type: Collider라고 표시하는 Script error: OnTriggerEnter를 기록한 뒤, 해당 메서드를 호출하지 않습니다. Collision은 두 고체가 접촉 지점에서 만나는 OnCollisionEnter에 사용됩니다. 트리거는 보고할 접촉이 없고 콜라이더만 있으므로 Collider를 받습니다.

challenge icon

챌린지

쉬움

톨게이트의 메서드를 수정한 다음, 자동차에서 통행료를 받으세요.

  1. ‘플레이’를 누르세요. Console에 메서드에 관한 오류가 표시됩니다. void OnTriggerEnter(Collider other)로 바꾸세요.
  2. 메서드 안에서 other.CompareTag("Car")일 때, toll을 collected에 더하고 "Toll: " + collected를 로그에 기록하세요. 자전거 이용자는 무료로 통과합니다.

‘플레이’를 누르세요. Console에 Toll: 3이 표시된 다음 Toll: 6이 표시됩니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class TollGate : MonoBehaviour
{
    public int toll = 3;
    int collected;

    void OnTriggerEnter(Collision collision)
    {
        // 자동차는 통행료를 내고, 그 외에는 무료로 통과한다
    }
}

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

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