2

マインクラフトの「ウェイポイントmod」を作っています。アイデアは、座標に線が描画され、3D ボックス (非回転) も描画されるということです。以下はラインコードです。

  public void WaypointLine(boolean flag) {
    try {
    GL11.glBlendFunc(770, 771);
    GL11.glLineWidth(3F);
    GL11.glDisable(2929 /*GL_DEPTH_TEST*/);
    GL11.glDepthMask(false);

    GL11.glColor3f(255, 0, 0);

          double size = 0.45;
          double ytSize = 0.35;
          GL11.glBegin(GL11.GL_LINES);

              double X = EntityClientPlayerMP.waypointX;
              double Y = EntityClientPlayerMP.waypointY;
              double Z = EntityClientPlayerMP.waypointZ;
              double mX = mc.thePlayer.posX;
              double mY = mc.thePlayer.posY;
              double mZ = mc.thePlayer.posZ;
              double dX = (mX - X);
              double dY = (mY - Y);
              double dZ = (mZ - Z);

              if(X != mX && Y != mY && Z != mZ) {        
                  GL11.glVertex3d(0, 0, 0);
                  GL11.glVertex3d((-dX + size) - 0.5, (ytSize - dY) + 1.0, (-dZ - size) + 0.5);
              }


          GL11.glEnd();    
    GL11.glDepthMask(true);
    GL11.glEnable(2929 /*GL_DEPTH_TEST*/);
      } catch (Exception e) {}

}

それは完全に機能します。立方体を描く方法がまったくわかりません。どうすればいいですか?例またはリソースをお願いします...検索を行ったところ、理解に苦労しました。

4

1 に答える 1

0

わーい!即時モード ftw!

float sizeX = 100;
float sizeY = 200;
float sizeZ = 80;
float centerX = 20;
float centerY = 30;
float centerZ = 10;
float [] yay = {
  centerX-sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5,
  centerX+sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5,
  centerX+sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,

  centerX-sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX+sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX+sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,

  centerX+sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,
  centerX+sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX+sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5,
  centerX+sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,

  centerX-sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5,
  centerX-sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,

  centerX+sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY+sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,
  centerX+sizeX*.5,centerY+sizeY*.5,centerZ+sizeZ*.5,

  centerX+sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ-sizeZ*.5,
  centerX-sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5,
  centerX+sizeX*.5,centerY-sizeY*.5,centerZ+sizeZ*.5};


GL11.glBegin(GL11.QUADS);
for(int i = 0; i < yay.length; i+=3) 
  GL11.glVertex3d(yay[i],yay[i+1],yay[i+2]);
GL11.glEnd();
于 2013-09-05T21:40:07.597 に答える