2015-09-20 5 views
2

У меня есть небольшой пример сценария, где у меня есть круг (радиус: 40), который падает на землю. Но когда я увеличить свой радиус до 80, причем только графика окружности, кажется, меняется, но не физика:JavaScript, Matter.js: Увеличение радиуса круга

<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> 

enter image description here

ответ

2

Я полагаю, что с вашим подходом вы также должны вызвать Мир .add (engine.world, circle) снова и возможно удалить предыдущий круг с меньшим радиусом, так как двигатель работает с копией круга. В качестве альтернативы вы можете вызвать метод масштабирования на корпусе: http://brm.io/matter-js-docs/classes/Body.html#method_scale

+0

Но тогда вся другая физика исчезнет, ​​по крайней мере, если круг движется. Но я вижу, если я смогу восстановить эти вещи. – Unknown

+0

Я предполагаю, что нет указателя на глобальный круг, который вы создали, когда передаете его миру, но его копия создается. Поэтому, когда вы изменяете радиус круга, это не влияет на используемую копию. – benbo

+0

Возможно, вы можете вызвать метод масштабирования на теле: http://brm.io/matter-js-docs/classes/Body.html#method_scale – benbo

 Смежные вопросы

  • Нет связанных вопросов^_^