발사체를 잡아 던지세요 — 충분한 속도로 충돌하면 블록이 부서집니다
이 실험에 대해
충돌 이벤트에서 속도가 임계값(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)
}
})
})