1
두 바디 모두 동적입니다. 그 중 하나는 중력을 끄고 다른 바디에 충돌했을 때만 켜기를 원합니다. 내 연락처 청취자를 설정할 수는 있지만 두 특정 바디가 만지면 조치를 지정하려고합니다.Libgdx와 Box2d 두 특정 바디 충돌을 감지합니다.
어떤 지침이 있습니까?
두 바디 모두 동적입니다. 그 중 하나는 중력을 끄고 다른 바디에 충돌했을 때만 켜기를 원합니다. 내 연락처 청취자를 설정할 수는 있지만 두 특정 바디가 만지면 조치를 지정하려고합니다.Libgdx와 Box2d 두 특정 바디 충돌을 감지합니다.
어떤 지침이 있습니까?
U 몸의 유저 데이터를 설정하고 그
public class GameColiision implements ContactListener
{
public GameColiision()
{
}
@Override
public void beginContact(Contact contact) {
// TODO Auto-generated method stub
Body a=contact.getFixtureA().getBody();
Body b=contact.getFixtureB().getBody();
a.getUserData();
if(a.getUserData() instanceof Obstacle&&b.getUserData() instanceof Car)
{
}
}
@Override
public void endContact(Contact contact) {
// TODO Auto-generated method stub
}
@Override
public void preSolve(Contact contact, Manifold oldManifold) {
// TODO Auto-generated method stub
}
@Override
public void postSolve(Contact contact, ContactImpulse impulse) {
// TODO Auto-generated method stub
}
}
public class Obstacle
{
public Body rectangleBody;
public Body triangleBody;
World world;
public static final float WIDTH=10/40f;
public static final float HEIGHT=10/40f;
public Obstacle(World world,float x,float y)
{
this.world=world;
initRectangle(x,y);
}
private void initRectangle(float x, float y)
{
BodyDef bodyDef=new BodyDef();
FixtureDef fixtureDef=new FixtureDef();
bodyDef.type=BodyType.DynamicBody;
rectangleBody=world.createBody(bodyDef);
PolygonShape polygonShape=new PolygonShape();
polygonShape.setAsBox(WIDTH,HEIGHT);
fixtureDef.shape=polygonShape;
fixtureDef.friction=1f;
fixtureDef.density = 1f;
rectangleBody.createFixture(fixtureDef);
rectangleBody.setTransform(x, y, 0) ;
rectangleBody.setAngularDamping(0);
rectangleBody.setUserData(this);
}
희망처럼 사용할 수있는이
예는 한 문제 해결 !!!! 좋은 물건! – BalintD
즐거움 –
즐거움 당신은 a가 항상 "장애물"이고 "b"는 항상 "자동차"이므로 "a"는 "자동차"가 될 수 있고 "b"는 "장애물"이 될 수 있음을 잊지 말아야합니다. , 당신도 이것을 써야합니다 : "b.getUserData() instanceof Obstacle && a.getUserData() instanceof Car" – MarsPeople