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를 받습니다.
챌린지
쉬움톨게이트의 메서드를 수정한 다음, 자동차에서 통행료를 받으세요.
- ‘플레이’를 누르세요. Console에 메서드에 관한 오류가 표시됩니다.
void OnTriggerEnter(Collider other)로 바꾸세요. - 메서드 안에서
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 플레이그라운드