호빵의 IT 개발소

[유니티] 충돌 체크 본문

C#, 유니티/유니티엔진 기초

[유니티] 충돌 체크

호빵Stack 2022. 7. 5. 02:04

Collider

  • 유니티에서 충돌 체크를 하기 위해 필요한 컴포넌트
  • 콜라이더는 3D 오브젝트를 위한 Box Collider, Capsule Collider, Shpere Collider등이 있고, 2D 오브젝트를 위한 Box Collider 2D, Polygon Collider 2D, Circle Collider 2D등이 있습니다.

 

Collider를 이용한 충돌 체크 3가지 함수

void OnTriggerEnter(Collider other) : Trigger에 들어갔을 때

public class DeadTrap : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        // 해당 트랩에 플레이어가 닿으면 함정 발동
        if (!isActivated)
        {
            if (other.transform.tag != "Untagged" && other.transform.tag != "Trap")
            {
                StartCoroutine(theTrapDamage.ActivatedTrapCoroutine()); // 함정 발동 코루틴 실행
                isActivated = true;
                anim.SetTrigger("Activate");
                theAudio.clip = sound_Activate;
                theAudio.Play();
            }
        }
    }
}
  • 해당 트랩에 플레이어가 닿으면 함정이 발동 된다.

 

void OnTriggerStay(Collider other) : Trigger안에 있을때

public class Fire : MonoBehaviour
{
    private void OnTriggerStay(Collider other)
    {
        // 해당 불에 플레이어가 닿고 있으면 지속 데미지
        if (isFire && other.transform.tag == "Player")
        {
            if (currentDamageTime <= 0)
            {
                other.GetComponent<Burn>().StartBurning(); // 화상 효과
                thePlayerStatus.DecreaseHP(damgae);
                currentDamageTime = damageTime;
            }
        }
    }
}
  • 해당 불에 플레이어가 계속 닿아 있으면 지속적으로 데미지를 입는다.

 

void OnTriggerExit(Collider other) : Trigger를 벗어 날때

public class BoomTrap : MonoBehaviour
{
    private void OnTriggerExit(Collider other)
    {
        // 해당 트랩에 플레이어가 닿은 뒤 빠져 나가면 지뢰가 터짐
        if (!isActivated)
        {
            if (other.transform.tag != "Untagged" && other.transform.tag != "Trap")
            {
                StartCoroutine(theTrapDamage.ActivatedTrapCoroutine()); // 함정 발동 코루틴 실행
                isActivated = true;
                anim.SetTrigger("Activate");
                theAudio.clip = sound_Activate;
                theAudio.Play();
            }
        }
    }
}
  • 해당 지뢰에 플레이어가 닿은 뒤 빠져나가면 지뢰가 터진다.

 

 

 

 


참조 및 출처 : 

https://funfunhanblog.tistory.com/13

https://ssabi.tistory.com/45

'C#, 유니티 > 유니티엔진 기초' 카테고리의 다른 글

[유니티] Rigidbody  (0) 2022.07.05
[유니티] 선형 보간 Lerp  (0) 2022.07.05
[유니티] 이벤트시스템(EventSystem)  (0) 2022.07.05
[유니티] 정규화(normalized)  (0) 2022.07.05
[유니티] Euler, Quaternion  (0) 2022.07.04
Comments