问题描述
后面代码中用到的变量:
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 个),其中蓝色球保持静止:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)