2014-04-25 5 views
0

andengine gles2에서 몸체와 관련된 스프라이트를 어떻게 얻을 수 있습니까? 본문이 충돌하면 관련 본문을 가져올 수 있지만 해당 본문과 연결된 스프라이트를 어떻게 얻을 수 있습니까?Box2d - AndEngine

제발 도와주세요, 나는 eng와 box2d를 처음 보았습니다.

미리 감사드립니다. 당신이 몸은이 같은 몇 가지 추가 데이터를 설정할 수있는 몸을 만들 때

답변

1

는 : 그것은 개체 요소를 필요로하기 때문에

myBody.setUserData("Monster"); //to set a String 
myBody.setUserData(333); //to set a number 
myBody.setUserData(new MyData()); //to set other Object 

는 사실이 방법은 아무것도 받아들입니다. 그래서 당신은 다음과 같이/엔티티가 그 몸에 연관되는 스프라이트 처리하기 위해 자신의 클래스를 만들 수 있습니다

class BodyData{ 
    public IEntity mEntity; 
    public String mName; 

    public BodyData(String pName, pEntity){ 
     mEntity = pEntity; 
     mName = pName; 
    } 
} 

을 그럼 당신은 당신의 몸을 만들고 같은 것을 할 수있는 스프라이트에 연결할 때 :

myPlayerBody.setUserData(new BodyData("Player", myPlayerSprite)); 
그리고에서 충돌 감지시 :

mPhysicsWorld.setContactListener( 
    new ContactListener(){ 
     public void beginContact(Contact contact){ 
      final Fixture mB1 = contact.getFixtureA(); 
      final Fixture mB2 = contact.getFixtureB(); 

      if(mB2.getBody().getUserData() != null && mB1.getBody().getUserData() != null){ 
       final BodyData mBD1 = (BodyData)mB1.getBody().getUserData(); 
       final BodyData mBD2 = (BodyData)mB2.getBody().getUserData(); 
       Sprite mSprite1 = (Sprite) mBD1.mEntity; 
       Sprite mSprite2 = (Sprite) mBD2.mEntity; 
       // Do whatever you want to do with the sprites 
      } 
     } 
     public void endContact(Contact contact) { 
     } 
     public void preSolve(Contact contact, Manifold oldManifold) { 
     } 
     public void postSolve(Contact contact, 
       ContactImpulse impulse) { 
     } 
    } 
); 
0

을 당신은 정말 당신이 몸매에 스프라이트를 연결할 수있는 PhysicConnector을 등록했습니다 y :

physicsWorld.registerPhysicsConnector(new PhysicsConnector(sprite, body, true, true)); 

희망 하시겠습니까?

0
//Body variable in above Body bodyname; 
    //associate body with the sprite 
    body=PhysicsFactory.createBoxBody(physics_world, sprite_name, BodyType.DynamicBody, fixturedefinition); 

마지막 라인에서 조명기 정의는 사용자의 선택에 따라 정의됩니다. 사용 스프라이트를 얻을 수있는 심령 이벤트에서

yourBody.setUserData(yourSprite); 

: 당신이 만들 때이 같은/엔티티를 스프라이트에

0

는 몸은 UserData를 설정

public void beginContact(final Contact contact) { 
    final Body bA = contact.getFixtureA().getBody(); 
    final Body bB = contact.getFixtureB().getBody(); 
    final Object oA = contact.getFixtureA().getBody().getUserData(); 
    final Object oB = contact.getFixtureB().getBody().getUserData(); 
    final Sprite spriteA = (Sprite)oA; 
    final Sprite spriteB = (Sprite)oB; 
} 
관련 문제