2013-07-24 2 views
1

두 바디 모두 동적입니다. 그 중 하나는 중력을 끄고 다른 바디에 충돌했을 때만 켜기를 원합니다. 내 연락처 청취자를 설정할 수는 있지만 두 특정 바디가 만지면 조치를 지정하려고합니다.Libgdx와 Box2d 두 특정 바디 충돌을 감지합니다.

어떤 지침이 있습니까?

답변

7

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); 

} 

희망처럼 사용할 수있는이

+0

예는 한 문제 해결 !!!! 좋은 물건! – BalintD

+0

즐거움 –

+0

즐거움 당신은 a가 항상 "장애물"이고 "b"는 항상 "자동차"이므로 "a"는 "자동차"가 될 수 있고 "b"는 "장애물"이 될 수 있음을 잊지 말아야합니다. , 당신도 이것을 써야합니다 : "b.getUserData() instanceof Obstacle && a.getUserData() instanceof Car" – MarsPeople

관련 문제