如何检测我的球 body 是否击中了另一个静电球 body
How to detect if my ball body has hit another static body
所以我在我的世界里创造了两个物体,一个球和一个平面。由于重力作用,球落到表面上并与之碰撞。
我认为我使用 Events
和 Body.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
时,球似乎穿过静电 body。
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)
})
});
在后一种情况下,我只是从该事件返回的对象中解析更多信息。
所以我在我的世界里创造了两个物体,一个球和一个平面。由于重力作用,球落到表面上并与之碰撞。
我认为我使用 Events
和 Body.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
时,球似乎穿过静电 body。
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)
})
});
在后一种情况下,我只是从该事件返回的对象中解析更多信息。