2013-08-16 8 views
1

내 게임에서의 충돌 문제 : 일부 엔티티의 경우 컨택 리스너에 등록 된 것과 일치하지 않습니다. 특히, 나의 총알과 미사일은 종종 다른 실재물/군중을 통과 할 때가 많으며 때로는 그렇게 할 수있는 경우가 많기 때문에 이러한 불일치의 원인을 실제로 확인할 수는 없습니다. 나는 둘 다 연속적인 충돌을 위해 "총알"로 설정했고, 그들은 불쾌하게 빨리 여행하지 않는다. 그래서 나는 생각이 없다. 난 당신이 또한 고정 B인지 여부를 확인해야합니다 생각충돌이 컨택 리스너에 등록되지 않았습니까? [Libgdx + Box2d]

public class Collisions implements ContactListener { 

public Collisions() {  
} 

@Override 
public void beginContact(Contact contact) { 
    Body a = contact.getFixtureA().getBody(); 
    Body b = contact.getFixtureB().getBody(); 

    if (a.getUserData() instanceof Bullet && b.getUserData() instanceof Enemy) { 
     Bullet bullet = (Bullet) a.getUserData(); 
     Enemy enemy = (Enemy) b.getUserData(); 

     enemy.harm(10); 
     bullet.kill(); 
    } 

    if (a.getUserData() instanceof Missile && b.getUserData() instanceof Enemy) { 
     Missile missile = (Missile) a.getUserData(); 
     Enemy enemy = (Enemy) b.getUserData(); 

     enemy.harm(40); 
     missile.kill(); 
    } 

    if (a.getUserData() instanceof Craft && b.getUserData() instanceof Enemy) { 
     Craft craft = (Craft) a.getUserData(); 
     Enemy enemy = (Enemy) b.getUserData(); 

     craft.harm(5); 
     enemy.harm(10); 
    } 
} 

@Override 
public void endContact(Contact contact) {  
} 

@Override 
public void preSolve(Contact contact, Manifold oldManifold) {  
} 

@Override 
public void postSolve(Contact contact, ContactImpulse impulse) { 
} 

}

+0

문제를 설명해 주시면 문제는 연락처가 전혀 선택되지 않았 음을 의미합니다. 잘못 처리되지는 않습니다. – Surveon

답변

2

: 여기

http://www.youtube.com/watch?v=FMLkg5r3dpo

내 이름과 전화 수신기입니다 : 여기

비디오 문제를 시연 총알이나 미사일. 자주 당신이기구가 속한 객체를 어떻게 알 수 있도록 설비 또는기구에서 설정 한 사용자 데이터가 필요합니다, 그래서

http://www.iforce2d.net/b2dtut/collision-anatomy에서 A와 B 비품의 특별한 순서가 없습니다. 이 비품에서 GetBody()를 사용하여 충돌 한 시체를 찾을 수 있습니다.

+0

그건 그랬어; 고마워요. – tadamson

관련 문제