- OnTriggerEnter2D() : 두 오브젝트가 충돌하는 순간 1회 호출
- OnTriggerStay2D() : 충돌 직후 맞닿아 있는 동안 매 프레임 호출
- OnTriggerExit2D() : 두 오브젝트가 떨어져서 충돌이 종료되는 순간 1회 호출
- Trigger가 영향을 미치는 대상 Object의 Collider2D에서 "Is Trigger"가 설정 되어있어야 Trigger가 발동함
- 만약 이미 대상 Object의 Collider2D가 Used By composite로 설정되어 있는경우 Collider2D 하나를 추가하면 됨
// TriggerEvent.cs
// 트리거 오브젝트에 닿는 동안 moveObject를 빨간색으로 만들고 vector y축방향으로 3만큼 튕겨오름
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TriggerEvent : MonoBehaviour
{
// Inspector View 옵션 조절
[SerializeField]
private GameObject moveObject;
[SerializeField]
private Vector3 moveDirection;
private float moveSpeed;
private Color defaultColor;
private void Awake()
{
moveSpeed = 5.0f;
moveDirection = new Vector3(0, 3, 0);
defaultColor = moveObject.GetComponent<SpriteRenderer>().color;
}
// 충돌이 일어나는 순간 1회 호출
private void OnTriggerEnter2D(Collider2D collision)
{
// moveObject 오브젝트의 색상을 빨간색으로 설정
moveObject.GetComponent<SpriteRenderer>().color = Color.red;
}
// 충돌이 유지되는 동안 매 프레임 호출
private void OnTriggerStay2D(Collider2D collision)
{
moveObject.transform.position += moveDirection * moveSpeed * Time.deltaTime;
}
// 충돌이 종료되는 순간 1회 호출
private void OnTriggerExit2D(Collider2D collision)
{
// 오브젝트를 원래색으로 바꿈
moveObject.GetComponent<SpriteRenderer>().color = defaultColor;
//moveObject.transform.position = new Vector3(0, 4, 0);
}
}
cf) 다중트리거 조작시 해당 오브젝트의 자식 오브젝트를 임의로 생성해서 거기에 트리거 옵션을 옮기면 해결
'Unity' 카테고리의 다른 글
Unity 2D exercise (shooting game) (0) | 2021.07.13 |
---|---|
Unity 2D basic #5 (Instantiate) (0) | 2021.07.04 |
Unity 2D basic #3 (Collision) (0) | 2021.07.03 |
Unity 2D basic #2 (Key Input) (0) | 2021.07.03 |
Unity 2D basic #1 (Initialize & Update) (0) | 2021.07.03 |