AndEngine を使用して、Android プラットフォーム用のゲームを作成しています。円形のボディが円形のスプライトに接触しているかどうかを検出する必要があります。これを行うために、両方の中心と半径を計算し、pythag を使用してそれらが実際に接触しているかどうかを判断しています。ただし、体の x 座標を取得しようとすると、nullpointerexception が発生し続けます。spriteNum は、画面に触れてスプライトが作成されるたびに増加します。理由はありますか?私のコード:
public class grow implements Runnable{
Sprite sp;
Body body[] = new Body[100];
public grow(Sprite sprite){
sp = sprite;
}
@Override
public void run() {
float radf, rads; //fill radius/stationary radius
float[] fill; //fillx/stationaryx
float fx=0, fy=0, sx, sy;
while(down){
//Log.e("Tag","Running thread. Down = "+Boolean.toString(down));
yourSprite[spriteNum].setScale(scale += 0.1);
fill = yourSprite[spriteNum].getSceneCenterCoordinates();
fill[0]=fx;
fill[1]=fy;
radf=yourSprite[spriteNum].getHeightScaled()/2;
Log.e("Fill X before for",Float.toString(fx));
if(spriteNum>0)
for(int x=0;x<spriteNum;x++){
rads=yourSprite[x].getHeightScaled()/2;
sx = body[x].getWorldCenter().x; //Null pointer exception
sy = body[x].getWorldCenter().y;
if(Math.sqrt(Math.pow((fx-sx),2)+Math.pow((fy-sy),2))<(radf+rads))
down = false;
Log.e("Fill x",Float.toString(fx));
Log.e("Stat x",Float.toString(sy));
}
try {
Thread.sleep(75);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
body[spriteNum] = PhysicsFactory.createCircleBody(mPhysicsWorld, yourSprite[spriteNum], BodyType.DynamicBody, FIXTURE_DEF);
mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(yourSprite[spriteNum], body[spriteNum], true, true));
if(body[0]!=null)
Log.e("Body created","not null"); //This says it's not null, but when I did the same thing just inside of my for() loop and it did say it was null
}