gpt4 book ai didi

javascript - 如何检测我的球体是否撞到了另一个静态物体

转载 作者:行者123 更新时间:2023-12-03 03:50:19 26 4
gpt4 key购买 nike

所以我在我的世界中创建了两个物体,一个球和一个平面。由于重力,球落到表面上并与其碰撞。

我认为使用EventsBody.isSensor()我走在正确的轨道上,但我似乎无法从我的事件监听器中获取哪些物体发生了碰撞,即 body 名称。

sketch.js

var Engine = Matter.Engine,
Render = Matter.Render,
World = Matter.World,
Bodies = Matter.Bodies,
Events = Matter.Events;

var engine = Engine.create();

var render = Render.create({
element: document.body,
engine: engine
});

var surface = Bodies.rectangle(250, 250, 400, 100, { isStatic: true });

var ball = Bodies.circle(200, 0, 11, {
density: 0.05,
restitution: 0.7,
inertia: Infinity
});

Events.on(engine, 'collisionStart', function(event) {
console.log('collisionStart');
var pairs = event.pairs;
console.log(pairs);
});

World.add(engine.world, [surface, ball]);
Engine.run(engine);
Render.run(render);

事件被触发,但pairs变量中没有任何内容。我做错了什么?

此外,当我打开 isSensor: true 时,球看起来会穿过静态物体。

JS fiddle :https://jsfiddle.net/qk3yLfyq/12/

最佳答案

您走在正确的道路上,正在获取事件对象并使用它,您只需要解析一些更多信息。例如尝试这个,替换

Events.on(engine, 'collisionStart', function(event) {
console.log('collisionStart');
var pairs = event.pairs;
console.log(pairs);
});

Events.on(engine, 'collisionStart', function(event) {
event.pairs.forEach(function(obj){
console.log('BodyA is static: ' + obj.bodyA.isStatic + '. BodyB is static: ' + obj.bodyB.isStatic)
})
});

在后一种情况下,我只是从该事件返回的对象中解析更多信息。

关于javascript - 如何检测我的球体是否撞到了另一个静态物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198734/

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