2016-11-21 8 views
0
// array containing the active humans. 
public final Array<Human> activeHumans = new Array<Human>(); 
// object pool. 
public final Pool<Human> humanPool = new Pool<Human>() { 
    @Override 
    protected Human newObject() { 
     return new Human(100, 500); 
    } 
}; 

............................................. ...............................同じクラスのオブジェクトの衝突の処理方法を教えてください。

@Override 
public void update(float dt) { 
checkCollisions(); 
} 

public void checkCollisions() { 

// human-human collision 
    for (int i=0; i<activeHumans.size(); i++) { 
    Human h1 = activeHumans.get(i); 

    for (int j=0; j<activeHumans.size(); j++) { 
     Human h2 = activeHumans.get(j); 

     if (h1.getRectangle().overlaps(h2.getRectangle())) { 
       h1.setX(h1.getX() + 2); 
       } 
    } 
} 

} 

どういうわけか、すべてのオブジェクトHuman(h1とh2)がsetX(h1.getX() + 2);。それを修正するには?私はそれらの一つはさておき

ステップ必要

答えて

1

たぶん、あなたは(それが常に行います!)オブジェクトは、それ自身と重なってチェックを回避し、また、二回各ペアをチェック避けるために、その第二のループを変更することができます。

for (int j=i+1; j<activeHumans.size(); j++) ... 
関連する問題