gpt4 book ai didi

javascript - 我应该如何在 Matter.js 中使用 Matter.Object.create 放置对象?

转载 作者:行者123 更新时间:2023-11-28 19:11:21 25 4
gpt4 key购买 nike

我正在使用matter.js我有具有绝对位置的对象的顶点数据(来自 SVG 文件)。当我尝试将它们放置在 map 上时,它们最终都位于 0, 0 附近。通过以下代码片段可以轻松观察到这一点:

<body>
<script src="matter-0.8.0.js"></script>

<script>
var engine = Matter.Engine.create(document.body);
var object = Matter.Body.create(
{
vertices: [ { x: 300, y: 300 }, { x: 200, y: 300 }, { x: 350, y: 200 } ],
isStatic: true
});

Matter.World.add(engine.world, [object]);
Matter.Engine.run(engine);
</script>
</body>

或者看看这个jsfiddle:https://jsfiddle.net/vr213z4u/

这个定位应该如何工作?我是否需要将绝对位置数据标准化为相对位置并使用发送到 Matter.Object.create 的选项的位置属性?我尝试过,但所有物体都有点移位,可能是由于我缺乏理解。

更新/说明:我的目标是创建的对象的顶点最终精确地位于源数据中的坐标上。

最佳答案

在创建主体时,顶点将围绕其质心重新定向,然后转换为给定的body.position。由于您没有在此处传递位置向量,因此默认为 (0, 0)。

尝试这样的事情:

var body = Matter.Body.create({
position: { x: 500, y: 500 },
vertices: [{ x: 300, y: 300 }, { x: 200, y: 300 }, { x: 350, y: 200 }],
isStatic: true
});

如果您希望位置是绝对的:

var vertices = [{ x: 300, y: 300 }, { x: 200, y: 300 }, { x: 350, y: 200 }];

var body = Matter.Body.create({
position: Matter.Vertices.centre(vertices),
vertices: vertices,
isStatic: true
});

关于javascript - 我应该如何在 Matter.js 中使用 Matter.Object.create 放置对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30675883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com