← Home/matter

발사체를 잡아 던지세요 — 충분한 속도로 충돌하면 블록이 부서집니다

이 실험에 대해

충돌 이벤트에서 속도가 임계값(4.5px/frame)을 넘으면 블록을 제거하고5개의 파편 바디를 충격 방향으로 생성한다. 파편에는 Body.applyForce()로 충돌 방향 임펄스를 적용해 폭발하듯 퍼진다. 파편은 orange-300으로 표시된다.

핵심 코드

Events.on(engine, 'collisionStart', (event) => {
  event.pairs.forEach(({ bodyA, bodyB }) => {
    const speed = Math.max(bodyA.speed, bodyB.speed)
    if (speed < THRESHOLD) return

    // 블록 제거 후 파편 생성
    Composite.remove(world, block)
    for (let i = 0; i < 5; i++) {
      const frag = Bodies.rectangle(fx, fy, fw, fh, { ... })
      Body.applyForce(frag, pos, {
        x: Math.cos(angle) * impulse,
        y: Math.sin(angle) * impulse,
      })
      Composite.add(world, frag)
    }
  })
})