可以't在JS(box2d)处理中删除正文
Can't remove body in JS (box2d) processing
我使用的是带有处理(JS)的Box2d,我有两个身体,我希望其中一个在碰撞时消失,我尝试使用"physics.removeBody(b1);",但不幸的是,我的世界中所有的身体都消失了!这是碰撞函数中的代码。
void collision(Body b1, Body b2, float impulse) {
if (b2 == basket && b1.getMass() > 0) {
score += 10;
pop.cue(0);
pop.play();
physics.removeBody(b1);
}
}
通常在创建实体时,我会这样做:
void makeBody(float x, float y) {
BodyDef bd = new BodyDef();
bd.type = BodyType.DYNAMIC;
bd.position.set(box2d.coordPixelsToWorld(x, y));
body = box2d.createBody(bd);
body.setUserData(this); // This is important
PolygonShape sd = new PolygonShape();
float box2dW = box2d.scalarPixelsToWorld(w/2);
float box2dH = box2d.scalarPixelsToWorld(h/2);
sd.setAsBox(box2dW, box2dH);
FixtureDef fd = new FixtureDef();
fd.setUserData("box");
// Attach Fixture to Body
body.createFixture(fd);
}
既然你的身体有了userData属性,你就可以这样测试碰撞:
void beginContact (Contact cp) {
// Get both fixtures
Fixture f1 = cp.getFixtureA();
Fixture f2 = cp.getFixtureB();
// Get both bodies
Body b1 = f1.getBody();
Body b2 = f2.getBody();
// Get our objects that reference these bodies
Object o1 = b1.getUserData();
Object o2 = b2.getUserData();
//Detect player-enemy collision
if (b1.getUserData() == "player" && b2.getUserData() == "enemy") {
//... Do stuff here
}
if (b2.getUserData() == "player" && b1.getUserData() == "enemy") {
//... Do stuff here
}
重点是使用body的setUserData()函数来指定一个唯一的标识符,然后使用body的getUserData(。在您的示例中,您有实体b1和实体b2,但不进行任何类型的测试以确保正确的实体发生碰撞。
我希望这能帮助
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- keyup事件处理程序更改焦点不适用于快速键入
- 如何使用jquery处理php循环通过元素
- angular.js没有'无法在PhoneGap中处理视图标记
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 提示使用服务器端事件处理程序激活JavaScript
- javascript:如何在antlr生成的Lexer中进行错误处理
- 如何编写一个具有公共标头的批处理
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 如何处理node.js节点mongodb中的连接和查询队列
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 如何处理10页以上的静态页眉/页脚
- 将事件处理程序绑定到任何可能的事件
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- python到“;流“;字典处理
- 使用javascript进行实时图像处理
- 导入jQuery脚本获胜'我不处理html文件
- Javascript无法处理表单提交
- 可以't在JS(box2d)处理中删除正文
- Box2D体b2FixtureDef.shape.SetAsArray不能处理俄罗斯方块形状