物体之间的摩擦不工作 MatterJS

问题描述

我正在将一个小球放入一个旋转的空心圆盘中,它看起来像这样。

enter image description here

后面代码中用到的变量:

radius = 350,object_radius = 5,ball_x = window.innerWidth / 2,ball_y = window.innerHeight / 2 + radius,

通过以下代码(连接 100 个矩形)创建大的空心圆盘状主体:

function containerpolygon(
    x,y,sides,radius,color
) {
    const width = 2;
    const extraLength = 1.15;
    const initialRotation = 0;
    const theta = (2 * Math.PI) / sides;
    const sideLength = ((2 * radius * theta) / 2) * extraLength;
    const parts = [];

    for (let i = 0; i < sides; i++) {
        // We'll build thin sides and then translate + rotate them appropriately.
        const body = Bodies.rectangle(0,sideLength,width,{
            render: {
                fillStyle: color,},});
        Body.rotate(body,i * theta);
        Body.translate(body,{
            x: radius * Math.sin(i * theta),y: -radius * Math.cos(i * theta),});
        parts.push(body);
    }

    const ret = Body.create({
        isstatic: true,rotationSpeed: -2.5,});

    Body.setParts(ret,parts);
    Body.translate(ret,{ x: x,y: y });
    return ret;
}
let rotating_circle = containerpolygon(
    window.innerWidth / 2,window.innerHeight / 2,100,radius + object_radius,outter_circle_color
);
//hollow circle

圆盘内的球是通过以下代码创建的:

let ball = Bodies.circle(
    window.innerWidth / 2,window.innerHeight / 2 + radius,object_radius,{
        frictionAir: 0,friction: 0.05,restitution: 0
    }
);

我正在模拟太空中的场景,所以我将 engine.world.gravity.y = 0; 和球的恢复设置为 0 以上。

接下来,我使用以下代码旋转外圆:

function updateRotation() {
  Matter.Body.setAngle(
    rotating_circle,rotating_circle.angle + rotating_circle.rotationSpeed
  );
  requestAnimationFrame(updateRotation);
}
window.requestAnimationFrame(updateRotation);

然而,我希望球随着空心圆移动,因此随着外圆旋转,因此带有摩擦力,我将其设置为上面两个物体的属性。但是,我的代码产生了这个(为了可视化,我将外圆的三角形数量减少到 10 个),其中蓝色球保持静止:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)