Unity

Unity 2D basic #4 (Trigger)

PON_Z 2021. 7. 3. 13:22

- 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);
    }
    


}

 

 

공룡(Trigger)와 닿으면 슬라임이 빨간색으로 변하고 튀어 오름

 

 

 

 

 

 

 

cf) 다중트리거 조작시 해당 오브젝트의 자식 오브젝트를 임의로 생성해서 거기에 트리거 옵션을 옮기면 해결

 

 

728x90

'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