Matter.JS Обнаружение столкновения между двумя статическими датчиками - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь добавить несколько круговых тел в свой игровой мир, которые можно перемещать. И мне нужно определить, когда они сталкиваются, но и позволить им пройти.

Я пытался сделать круги isSensor и Static - столкновения не обнаружено. Я пытался сделать их isSensor и NO Static - столкновения обнаружены, но они падают через мир из-за гравитации / физики. Я пытался удалить физику, но столкновения не обнаружено.

Что делать?

1 Ответ

0 голосов
/ 07 апреля 2019

Вы можете использовать свое собственное обнаружение столкновений с теорией Пифагора, например:

Events.on(engine, 'beforeUpdate', function() {
    var circleAX = circleA.position.x;
    var circleAY = circleA.position.y;
    var circleBX = circleB.position.x;
    var circleBY = circleB.position.y;

    var dx = circleAX - circleBX;
    var dy = circleAY - circleBY;
    var dist = Math.sqrt(dy*dy + dx*dx);

    //substitute radiusA and radiusB for the radiuses of the circles
    if (dist < radiusA+radiusB) {
        //Collision
    }
});

Чтобы они не сталкивались, используйте collisionFilter.

Если вы стремитесь к высокой эффективности, это не лучший способ. Однако, это не должно замедлять игру настолько, чтобы реально изменить ситуацию, если только сотни объектов не проверяются на столкновения.

...