如何防止快速移动的对象通过something.js中的其他对象?

问题描述

找到答案了吗? 有谁知道如何解决这个问题? 我当时在上网,但似乎没有解决方案。 我发现的唯一东西是旧的未完成的提案。

如果身体开始移动太快或超出范围,我试图停止它:

var frame = () => {

    if(condition){
        this.Body.applyForce(body,position,force);
    }   

    window.requestAnimationFrame(frame);
}

frame();

但是我不知道有多少力量来阻止它。我试图将速度用作反作用力,但是没有适当的位置参数值,我无法成功。

在哪里可以从中获得正确的反作用力值,正确应用位置参数的值将是什么?

以及如何在与某些物体(如墙)的碰撞中施加反作用力? 在与墙壁碰撞时施加反力也有意义吗?通过墙壁的物体甚至会与它们碰撞吗?

亲切的问候, 斯拉维克

解决方法

您最好的选择是:

  1. 增加碰撞对象的大小。

  1. 使用engine.positionIterations = x(其中engine = Matter.Engine.create())来增加每次迭代的位置计算,并使用engine.velocityIterations = y来增加每次迭代的速度计算。默认值分别为6和4。

请注意,更改这些设置会影响性能,因此需要进行一些调整。

这些属性可以在documentation上找到。