我正在开发3D体素游戏。在这个游戏中,我有一个边界框来检测玩家正在看哪些体素。玩家正在移动的每个嘀嗒声。
我必须只阅读边界框位置。我通过以下方式执行此操作:this.bb.x0/x1/y0/y1/z0/z1 += xa/ya/za
。
然而,当我添加此代码时,我丢失了很多帧,150 fps到15.即使代码没有在应用程序中运行,游戏速度也会降低。我该怎么做才能加速申请?
这是我的代码:
public void move(float xa, float ya, float za){
onGround = false;
double new_x = this.x + xa;
double new_y = this.y + ya;
double new_z = this.z + za;
if(level.isSolidTile((int)new_x, (int)this.y, (int)this.z)||level.isSolidTile((int)new_x, (int)this.y-1, (int)this.z)||level.isSolidTile((int)new_x, (int)this.y-2, (int)this.z)) {
new_x = this.x;
xa = 0;
} else if(!(xa==0)) {
//this.bb.move(xa, 0.0f, 0.0f);
this.bb.x0 += xa;
this.bb.x1 += xa;
System.out.println("no");
}
if(level.isSolidTile((int)this.x, (int)new_y-2, (int)this.z)&&new_y<this.y) {
new_y = this.y;
ya = 0;
onGround=true;
}
if(level.isSolidTile((int)this.x, (int)new_y, (int)this.z)&&new_y>this.y) {
new_y = this.y;
ya = 0;
} else if(!(ya==0)){
this.bb.y0 += ya;
this.bb.y1 += ya;
System.out.println("no");
}
if(level.isSolidTile((int)this.x, (int)this.y, (int)new_z)||level.isSolidTile((int)this.x, (int)this.y-1, (int)new_z)||level.isSolidTile((int)this.x, (int)this.y-2, (int)new_z)) {
new_z = this.z;
za = 0;
} else if(!(xa==0)){
//this.bb.move(0.0f, 0.0f, za);
this.bb.z0 += za;
this.bb.z1 += za;
System.out.println("no");
}
this.setPos((float) new_x,(float) new_y, (float) new_z);
if(!((xa+ya+za)==0)) {
}
}