본문 바로가기
Project/[Unity] 지진 시뮬레이션

[Unity] 지진 시뮬레이션 - 6 (장애물 데미지 구현)

by ruki 2024. 3. 26.

1. 콜라이더 배치

접촉을 인식시키기 위해서는 콜라이더를 먼저 만들어주어야 한다.

오브젝트 편집 창에 들어가서 Add Component를 선택한다.

Capsule Collider를 생성한다.

적절하게 배치해 준다.

나중에 한 번에 학습시킬 때 player끼리의 충돌을 방지하고 코드를 간단하게 만들기 위해 Is Trigger 항목을 선택하여 충돌 연산에서 제외시켰다.

2. 접촉 인식

태그를 추가해서 player가 장애물에 접촉하였을 때 접촉한 장애물이 무엇인지 알 수 있게 할 것이다.

 

먼저 태그를 추가한다.

오브젝트마다 태그를 달아준다.

 

Project에서 우클릭에서 C# 스크립트를 생성하고 코드를 추가한다.

 

void OnTriggerEnter(Collider other)
{
    print(other.tag);
}

void OnTriggerEnter(Collider other) : Trigger가 오브젝트와 충돌을 시작하였을 때 함수를 호출해 주며, 충돌한 오브젝트의 정보를 other 변수로 전달해 준다.

 

잘 작동하는지 확인하기 위해 충돌한 오브젝트의 태그를 출력하도록 하였다.

잘 작동한다.

 

3. 장애물 속력에 따른 위협 측정

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerDamage : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if(other.tag == "box" || other.tag == "book") 
        {
            float damage = other.GetComponent<Rigidbody>().velocity.magnitude;
            
            if(damage > 1) print("BOOM!!!");
        }
    }
}

 

박스나 책 같은 장애물이 player와 접촉했을 때 장애물의 속력을 측정하여 특정 속력을 넘었다면 player가 위협을 느끼도록 코드를 추가하였다.

 

잘 작동한다.