[Godot] 콜린층과 마스크에 대해서.

2929 단어 Godot
개요
이 글에는 Godot Engine의 충돌층과 마스크가 설명된다.
프로젝트 작성 시 동작
프로젝트를 작성할 때KinematicBody2D와 같은 충돌 대상입니다.
이는 물리적 행동에서는 옳지만 게임으로서의 충돌, 특정한 대상으로의 충돌 배제 등은 불편하다.
예를 들어 아래의 2D 사격의 충돌 규칙의 경우...
  • 플레이어는 에니미(적)와 버렛(적탄) 충돌만 한다
  • Shot(본기에서 발사된 총알)은 Enemy만 충돌하기를 희망
  • Enemy가 Player와 Shot 충돌만 일으키기를 원합니다
  • Bulet은 Player와만 충돌하려고 합니다
  • Player
    Shot
    Enemy
    Bullet
    Player
    ---


    Shot
    ---

    Enemy


    ---
    Bullet

    ---
    고독에서는 이처럼 특정 대상과만 충돌하는 구조로'충돌 도면층과 마스크'를 준비했다.
    충돌 도면층의 이름을 설정합니다.プロジェクト > プロジェクト設定에서 항목 설정을 연 후 一般 > Layer Names > 2d/3d Physics에서 레이어 이름을 설정할 수 있습니다.2d/3d Render 드로잉 레이어에서는 직선과 다릅니다!)
    이번에는 2D로 판정하려고 아래와 같이 설정했다.

    이 옵션을 설정하면 각 객체PhysicsBody2D > Collision에서 충돌 레이어 및 마스크 버전을 이해하기 쉬운 이름으로 관리할 수 있습니다.

    도층과 복판 사이의 관계
    도면층과 복판의 관계는 다음과 같다.

  • 도층: 자신이 속한 콜레스테롤

  • 마스크: 당첨 판정을 받은 콜레스테롤
  • 예를 들어 플레이어는 플레이어 층에 속하고 마스크(충돌 대상)는 Enemy/Bulet이다

    Shot은 Shot층에 속하고 마스크는 Enemy입니다.

    에니미는 에니미층에 속하고 마스크는 플레이어입니다.

    버렛은 버렛층에 속하고 마스크는 플레이어입니다.

    확인 작업을 수행합니다.
    먼저 Player입니다.
    Player는 Enemy 및 Bulet만 판정합니다.

    '샷'은 판정을 하지 않는다.
    Shot의 정확한 판정을 보겠습니다.

    샷은 에니미와만 판정하기 때문에 다른 부위와 충돌하지 않는다.같은 층Shot에서도 충돌은 일어나지 않는다.
    참고 자료
  • Godot Docs 전체 편, 물리 편 18 편, 물리 편
  • 좋은 웹페이지 즐겨찾기