JavaScript,Matter.js:增加圆的半径
我有一个小的脚本示例,其中有一个圆(半径:40),落在地上。但当我把它的半径增加到80时,只有圆的图形似乎改变了,但物理却没有改变:JavaScript,Matter.js:增加圆的半径,javascript,physics-engine,matter.js,Javascript,Physics Engine,Matter.js,我有一个小的脚本示例,其中有一个圆(半径:40),落在地上。但当我把它的半径增加到80时,只有圆的图形似乎改变了,但物理却没有改变: <html> <body></body> </html> <script src="matter.js"></script> <script> var Engine = Matter.Engine, World = Matter.World, Bodies = Ma
<html>
<body></body>
</html>
<script src="matter.js"></script>
<script>
var Engine = Matter.Engine,
World = Matter.World,
Bodies = Matter.Bodies
engine = Engine.create(document.body,{render:{options:{wireframes: false}}})
engine.render.options.background = "#7f7f7f"
ground = Bodies.rectangle(400,590,800,20,{isStatic:true})
World.add(engine.world, ground)
circle = Bodies.circle(400,20,40,{render:{fillStyle:"#0000ff"}})
World.add(engine.world, circle)
Engine.run(engine)
setTimeout(increaseRadius, 1500)
function increaseRadius(){
circle.circleRadius = 80
}
</script>
var发动机=物质发动机,
世界=物质。世界,
物体=物质。物体
engine=engine.create(document.body,{render:{options:{wireframes:false}}})
engine.render.options.background=“#7F7F”
地面=实体。矩形(400590800,20,{isStatic:true})
添加(engine.World,ground)
圆=实体。圆(400,20,40,{render:{fillStyle:“#0000ff”})
添加(engine.World,圆圈)
发动机。运转(发动机)
设置超时(增加半径,1500)
函数increaseRadius(){
圆圈圈=80
}
我的猜测是,使用您的方法,您还必须再次调用World.add(engine.World,circle),并可能删除半径较小的前一个圆,因为引擎使用的是圆的副本。
或者,您可以在主体上调用scale方法:,但是所有其他物理都消失了,至少如果圆在移动。但我明白了,如果我能恢复这些东西……我假设当你们把它传递给世界时,并没有指向你们创建的全局圈的指针,但它的副本已经创建了。因此,当您更改圆的半径时,它不会影响实际使用的副本。您可以在主体上调用缩放方法:谢谢!,请更新后,这样我就可以为该项目评分answer@benbo是的,如果创建后需要更改实体的大小,则应使用
Body.scale
。请注意,body.circleRadius
仅用作更平滑圆渲染的提示。关于禁用碰撞的问题,请参见