Java 如何在scene2d中为演员添加(鼠标)关节
如果我有一个具有以下内容的GameStage:Java 如何在scene2d中为演员添加(鼠标)关节,java,libgdx,box2d,scene2d,Java,Libgdx,Box2d,Scene2d,如果我有一个具有以下内容的GameStage: ... public GameStage() { world = WorldUtils.createWorld(); setUpWorld(); setupCamera(); debugRenderer = new Box2DDebugRenderer(); } private void setUpWorld() { world = WorldUtils.createWorld(); world.s
...
public GameStage() {
world = WorldUtils.createWorld();
setUpWorld();
setupCamera();
debugRenderer = new Box2DDebugRenderer();
}
private void setUpWorld() {
world = WorldUtils.createWorld();
world.setContactListener(this);
setupGround();
setupBall();
setupJoint();
}
private void setupBall() {
ball = new Ball(WorldUtils.createBall(world));
addActor(ball);
}
private void setupGround() {
ground = new Ground(WorldUtils.createGround(world));
addActor(ground);
}
private void setupJoint() {
jointDef = new MouseJointDef();
jointDef.bodyA = ???
jointDef.collideConnected = true;
jointDef.maxForce = 50f;
}
...
如何引用每个参与者内的身体,以便在两个身体之间添加关节。具体来说,我试图在球身上添加一个鼠标点,这样我可以添加一个方向脉冲(鼠标点在触地时被破坏,或者如果达到最大脉冲)。在setupJoint方法中,我将地面设置为bodyA。在触地得分法中,我把身体B作为球。然后,我通过触摸找到x和y值(首先取消投影以从世界坐标移动到本地坐标),并使用jointDef.target.set设置鼠标的位置。我的问题是我无法从演员那里弄到尸体。下面是WorldUtils类中我的createBall方法的一个示例
...
public static Body createBall(World world) {
// BALL
// Body Definition
BodyDef ballDef = new BodyDef();
ballDef.type = BodyDef.BodyType.DynamicBody;
ballDef.position.set(0, 10); // 1 Meter up not 1 pixel
// Ball shape
CircleShape ballShape = new CircleShape();
ballShape.setRadius(.5f);
// Fixture Definition
FixtureDef fixtureDef = new FixtureDef();
fixtureDef.shape = ballShape;
fixtureDef.density = 2.0f;
fixtureDef.friction = .5f; // 0 to 1
fixtureDef.restitution = .5f; // 0 to 1
Body body = world.createBody(ballDef);
body.createFixture(fixtureDef);
body.resetMassData();
body.setUserData(new BallUserData());
ballShape.dispose();
return body;
}
...
我的球和场地是这样定义的
...
public class Ground extends GameActor {
public Ground(Body body) {
super(body);
}
@Override
public GroundUserData getUserData() {
return (GroundUserData) userData;
}
}
我确信我在做一些愚蠢的事情,或者我不明白scene2d和box2d之间的联系是如何工作的
谢谢难道不能将body存储为actor类的类成员变量吗?是的,我找到了答案,我就是这么做的。在我的例子中,我把它放在GameActor中,它扩展了Actor。谢谢