Я нашел библиотеку Javascript под названием Rough.js. Он был использован для рисования элементов холста. Поэтому я связал его с Matter.js, чтобы сделать простое физическое моделирование. Но вскоре я обнаружил необоснованное количество ошибок и глюков, но никаких ошибок консоли. Это началось с того, что половина пола не выступала в качестве пола. Так просто. Я только удвоил ширину пола. Затем ящики начали плавно переходить друг в друга, исчезая в воздухе и появляясь случайным образом.
Я пытался просмотреть вики Matter.js, но форума нет. Я пытался найти людей с похожими проблемами, но никого не было.
Код слишком длинный для размещения здесь, поэтому я дам вам ссылку на CodePen. Я также предоставлю небольшой пример кода.
Нажмите на демонстрацию, и она будет отображаться. Наблюдайте за поведением ящиков.
Event Listener:
document.body.addEventListener("click", e => {
height = (Math.random() * (50 - 10)) + 10
width = (Math.random() * (50 - 10)) + 10
color = colorArray[Math.floor(Math.random() * colorArray.length)]
box = Bodies.rectangle(e.clientX, e.clientY, width, height)
boxArray.push({height, width, color, box})
World.add(engine.world, box)
})
Animate Loop:
function animateLoop () {
c.clearRect(0, 0, canvas.width, canvas.height)
groundPos = ground.position
r.rectangle(groundPos.x, groundPos.y, innerWidth, 30, {roughness: 0.1, fillStyle: "dashed", fill: "gray"})
boxArray.forEach(item => {
boxPos = item.box.position
r.rectangle(boxPos.x, boxPos.y, item.width, item.height, {roughness: 1, fill: item.color})
})
Engine.update(engine)
requestAnimationFrame(animateLoop)
}
Код: https://codepen.io/BrianTheExpert/pen/JjjWyEN
Демонстрация: https://codepen.io/BrianTheExpert/full/JjjWyEN
Я ожидал, что появятся ящики с похожим поведением, но после игрына несколько минут я понял, что это нереально.