添加未运行的代码时,程序会变慢

时间:2018-01-08 11:05:54

标签: java performance frame-rate bounding-box voxel

我正在开发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)) {
    }
}

0 个答案:

没有答案