updated_at: 2024-12-15 04:01

collision

category, mask;

category 는 collision의 속성을 정의하는 곳이고 mask는 어느 collision을 통과(충돌안시킴) 시킬 것인가를 체크하는 것이다.

카테고리는 최대 32 까지 존재하며 아래와 같다. 0x0001 0x0002 0x0004 0x0008 0x0010

collision Filter를 별도로 정의하지 않으면 1번이 된다.

const defaultCategory = 0x0001, // for walls
const redCategory = 0x0002, // red circles
const yellowCategory = 0x0004 // yellow circles

red ball

Bodies.circle(x, y, 20, {
  collisionFilter: {
    category: redCategory,
  },
  render: {
    strokeStyle: 'red'
    fillStyle: 'transparent',
    lineWidth: 1,
  },
})

yellow ball

Bodies.circle(x, y, 20, {
  collisionFilter: {
    category: yellowCategory,
  },
  render: {
    strokeStyle: 'yellow',
    fillStyle: 'transparent',
    lineWidth: 1,
  },
})

blue ball

Bodies.circle(310, 40, 30, {
  collisionFilter: {
    mask: defaultCategory | yellowCategory,
  },
  render: {
    fillStyle: 'blue',
  },
})

블루볼은 redCategory가 mask에 없으므로 redCategory와는 충돌하지 않는다.

Table of contents 목차

평점을 남겨주세요
평점 : 2.5
총 투표수 : 1

질문 및 답글