我已经编写了一些代码,用于将精灵的位置更新到其对应的box 2d body的位置。这是一个指向gif的链接,它显示了程序在运行时的状态:
灰色机器人精灵用于连接较大的圆圈,而黑色蝙蝠精灵则用于连接较大的圆圈。这是我在每个类的update()方法中使用的代码行,用于在程序运行时设置sprite的位置:
setPosition(b2body.getPosition().x*RoboiGame.PPM -getWidth()/2, 64);
现在已经有几天了,似乎无法在任何类似问题上找到解决方案。
public void defineRoboi(){
BodyDef bdef = new BodyDef();
bdef.position.set(960/RoboiGame.PPM,64/RoboiGame.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
b2body = world.createBody(bdef);
FixtureDef fdef = new FixtureDef();
CircleShape shape = new CircleShape();
shape.setRadius(10/RoboiGame.PPM);
fdef.shape = shape;
b2body.createFixture(fdef);
fdef.filter.categoryBits = RoboiGame.ROBOI_BIT;
fdef.filter.maskBits = RoboiGame.GROUND_BIT;}
这是我创建b2body的定义方法。我的PPM值是100。
这是我的玩家类,名为'Roboi':https://pastebin.com/mhsmssZx
这是主要的游戏类: https://pastebin.com/SpqcXvBp
这是PlayScreen类: https://pastebin.com/eqSS7CdA