【UE4】 태그에 의한 당 판정

태그에 의한 충돌 판정을 붙이는 방법



게임에 있어서 공격이 명중했는지, 라고 하는 것을 판정하고 싶은 경우, 충돌했는지의 판정뿐만 아니라 무엇이 충돌했는지를 판정할 필요가 있습니다. 그렇게 하지 않으면 벽에 부딪치고는 데미지를 먹고, 동료끼리 부딪쳐서는 상처가 가는 캐릭터가 생겨 버립니다.

충돌한 오브젝트가 무엇인가를 판정하는 방법은 몇 가지 생각할 수 있다고 생각합니다만, 하나에 「태그」를 이용하는 방법이 있습니다.
공격의 예로 말하면 데미지를 주는 것과 같은 오브젝트(검이나 탄환 등)에 공통의 태그를 주고, 충돌한 오브젝트가 그 태그를 가지고 있으면 데미지를 먹는다는 방법입니다.

Unity에서 말하는 곳의 다음과 같은 처리입니다.

Hit.cs
// 何かがぶつかったら呼ばれる。
void OnCollisionEnter(Collision collision){

    // ぶつかった相手のタグを取得
    string tag = collision.gameObject.tag;

    // タグが"Bullet"なら攻撃を食らったと判定
    if(tag == "Bullet"){

        // 攻撃を食らった際の処理
        Destroy(this.gameObject);
    }
}

위의 예에서 말하면 "Bullet"이라는 태그를 가진 객체와 충돌하면 데미지를 먹은 것으로 판정합니다.
이제 권총이나 소총의 탄에 "Bullet"태그를 붙이고 벽이나 바닥에는 다른 태그를 붙이면 탄에 맞았을 때만 데미지를 먹게 됩니다.

요 전날 UnrealEngine4에서 Blueprint를 사용하여 비슷한 처리를 만들려고 하면 별로 정보가 없었기 때문에 소개합니다.

1.Actor에 태그를 붙인다



이 튜토리얼 를 예로 들어봅니다.

우선 데미지를 주는 오브젝트인 총알에 태그를 붙입니다. UE4의 기본 FPS 프로젝트에 포함된 총알의 액터는 FirstPersonProjectile이라는 이름입니다.


이쪽을 더블 클릭하면 다른 윈도우가 열립니다. 왼쪽 상단의 "FirstPersonProjectile (self)"를 클릭하십시오.


오른쪽의 details 탭을 아래로 스크롤하면 "Actor"라는 항목이 나옵니다. 해당 항목 하단의 아래쪽 화살표를 클릭하면 추가 설정 항목이 표시됩니다.


Tags라는 항목이 표시되므로 해당 항목의 "+"를 클릭하면 태그가 하나 추가됩니다.
태그의 값을 "Bullet"로 편집합시다.


편집 할 수 있으면 Compile하고 Save합시다. 이것으로 태그 추가가 완료됩니다.

2.데미지를 먹는 측의 판정



데미지를 먹는 쪽의 처리를 만들어 봅시다.
동영상으로 소개되고 있는 EvilCube를 기초로 개조해 갑니다.
다음과 같이합시다.

Actor Has Tag는 충돌한 Actor가 특정 Tag를 가지고 있는지 여부를 결정하는 노드이며 Branch는 if-else 문에 해당하는 노드입니다.

좋은 웹페이지 즐겨찾기