我正在使用p5.js生成基于浏览器的化学反应模拟。
代码使用box2d的JS端口处理模拟的物理过程(https://github.com/bobcgausa/cook-js)。
我编写了两个自定义类 Particle
和Collection
以对粒子块进行建模。通常,Collection
是一组Particle
对象。
加载模拟后,代码:
Collection
Collection
每初始化一次Particle
。 加载粒子后,我首先使用p5.js中的loadImage()
方法导入正确的精灵。创建图像对象后,我将其从b2库附加到物理物体上。
我必须异步创建b2对象,因为loadImage()
使用了回调函数。
要为实体建模,我需要将粒子连接在一起成为晶格。从理论上讲,我应该可以使用b2Joint
来做到这一点。 (b2Joint是可用于连接对象的绳索的物理等效项。)
这些关节的构造函数采用四个参数:
var joint = new b2Joint("rope", body1, body2, {separation: distance})
但是,当我调用b2Joint
构造函数时,body1
或body2
都不是(Particle
对象上的存储属性)已定义。这会引发错误,并且晶格不会形成。
body1
和body2
之后再尝试构造b2Joint
?