我使用柏林噪声函数创建了一个游戏的背景,这给了我一个顶点数组,然后在前面添加一个顶点{x:0 y:WORLD_HEIGHT},另一个位于数组末尾,即{x:世界宽度y:WORLD_HEIGHT}。我希望这能给予我一个随机顶部的平底。
那么我如何将其添加到matter.js世界中呢?我尝试使用以下内容创建基础:
var terrain = Bodies.fromVertices(???, ???, vertexSets, {
isStatic: true
}, true);
但是我不知道用什么来做坐标,我想它们应该代表物体的中心,但是,我不知道那是什么,因为它是噪声,我想做的是指定第一个柏林噪声顶点的x & y。
我甚至不确定给定这些顶点matter.js是在创建单个实体还是多个实体。
这是正确的方法还是有其他方法可以做到这一点?我真的很难与文档和例子。
2条答案
按热度按时间czq61nw11#
我使用
Matter.Body.setPosition(body, position)
来覆盖质心,并根据它的bounds
属性将地面放在我想要的位置。如果没有
setPosition
,如果运行几次这个代码片段,你会发现事情发生了跳跃(只是用一个具体的例子重现OP的错误):一个二个一个一个
我没有使用柏林噪波,并且在上面的示例中有一些内部顶点没有被正确检测到,但结果应该是相同的。
guykilcj2#
应该是整数,所有的宽度和高度的噪音纹理。值在那些x,y整数的地方可以是浮点数...没有问题。
地形应该有相同的宽度和高度,并且这些地方的值将是地形的高度。