Libgdx 施加脉冲时,Box2d车身粘在平台/墙壁的侧面
在一个侧滚平台类型的游戏中,我的角色遇到了一个奇怪的问题。如果他移动到平台的一侧,而我继续按住移动按钮,他只会粘在上面,直到我松开移动键,他才会摔倒。这是我的移动代码:Libgdx 施加脉冲时,Box2d车身粘在平台/墙壁的侧面,libgdx,box2d,Libgdx,Box2d,在一个侧滚平台类型的游戏中,我的角色遇到了一个奇怪的问题。如果他移动到平台的一侧,而我继续按住移动按钮,他只会粘在上面,直到我松开移动键,他才会摔倒。这是我的移动代码: public void move(float percent){ float desiredVel = speed.x *percent; float velChange = desiredVel - b2body.getLinearVelocity().x; float impu
public void move(float percent){
float desiredVel = speed.x *percent;
float velChange = desiredVel - b2body.getLinearVelocity().x;
float impulse = b2body.getMass() * velChange;
b2body.applyLinearImpulse(new Vector2(impulse,0),b2body.getWorldCenter(),true);
}
这称为基于触摸板控制器的给定百分比,但基本上百分比介于-1和1之间。这是我的角色身体/固定装置:
BodyDef bdef = new BodyDef();
bdef.position.set(704/ Constants.PPM, 1000/Constants.PPM);
bdef.type = BodyDef.BodyType.DynamicBody;
b2body = world.createBody(bdef);
b2body.setFixedRotation(true);
//Hitbox
FixtureDef fixtureDef = new FixtureDef();
PolygonShape shape = new PolygonShape();
shape.setAsBox(20/Constants.PPM,45/Constants.PPM);
fixtureDef.shape = shape;
//Add in category and mask bits
hitbox = b2body.createFixture(fixtureDef);
hitbox.setUserData("hitbox");
这是平台的主体/固定装置:
bdef.type = BodyDef.BodyType.StaticBody;
bdef.position.set((rect.getX() + rect.getWidth() / 2) / Constants.PPM, (rect.getY() + rect.getHeight() / 2) / Constants.PPM);
body = world.createBody(bdef);
shape.set(new Vector2(-rect.getWidth()/2/Constants.PPM, rect.getHeight()/2/Constants.PPM),new Vector2(rect.getWidth()/2/Constants.PPM, rect.getHeight()/2/Constants.PPM));
fdef.shape = shape;
fdef.friction = 0.5f;
fdef.density = 1;
fdef.filter.categoryBits = Constants.GROUND_BIT;
body.createFixture(fdef).setUserData("platform");
这是由于运动员推入克服重力的平台时产生的摩擦力造成的 您可以尝试以下几点:
这是由于运动员推入克服重力的平台时产生的摩擦力造成的 您可以尝试以下几点: