⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hero.java~66~

📁 一个J2Me的赛车游戏
💻 JAVA~66~
字号:
import javax.microedition.m3g.*;

public class Hero
    extends Car {
  public Group mycar;
  public Group groupcamandcar;
  private float carRotY = 0.0f;
  private float abilitytoturn = 2;
  private float acturnangle = 0.5f;
  private boolean go = false;
  private boolean back = false;
  private float currentRotY = 0.0f;

  public float lastcarspeed = 0;

  public Hero(World world, String name, float InitPosition[]) {
    try {
      Object3D[] Car = Loader.load("/res/c00.m3g");

      for (int i = 0; i < Car.length; i++) {
        if (Car[i] instanceof Group) {
          System.out.println("goodCar");
          mycar = (Group) Car[i];

          break;
        }
      }
      Car = null;
      groupcamandcar = new Group();
      world.addChild(groupcamandcar);
      groupcamandcar.postRotate(RotY, 0.0f, 1.0f, 0.0f);
      groupcamandcar.addChild(mycar);

      mycar.setTranslation( -0.0f, Global.groundtocam, 10.0f);
      mycar.postRotate( -90f, 1.0f, 0.0f, 0.0f);
      mycar.postRotate( -90f, 0.0f, 0.0f, 1.0f);

      turnangle = 0.5f;
    }

    catch (Exception e) {
      // ERROR!
      System.out.println("Loading error!");
      Global.reportException(e);
    }

  }

  public void update(Key key) {
  //  for (int i = 0; i < 3; i++) {
  //    if (carRotY > 1.5f) {
   //     carRotY -= 1.6f;
  //      mycar.postRotate( -1.6f, 0.0f, 0.0f, 1.0f);
  //    }
  //    if (carRotY < -1.5f) {
  //      carRotY += 1.6f;
   //     mycar.postRotate(1.6f, 0.0f, 0.0f, 1.0f);
  //    }
  //  }

    if (turnangle > 0.5f) {
      if ( (carspeed < 0.5f) && (!go)) {

        abilitytoturn = 2.0f;
        acturnangle = 0.4f;
      }
      else {
        abilitytoturn = 9;
        acturnangle = 0.3f;
      }
      turnangle -= turnangle / abilitytoturn;
    }

    if (key.left) {

      turnangle += acturnangle;
      RotY += turnangle;
      if (carspeed > (maxspeed - 0.2f)) {
        currentRotY = RotY;
      }

  //    carRotY += 0.2f;
  //    mycar.postRotate(0.2f, 0.0f, 0.0f, 1.0f);

      groupcamandcar.postRotate(turnangle, 0.0f, 1.0f, 0.0f);

      //      if (carspeed==0)
      //   groupcamandcar.translate( -1.5f * (float) camSine, 0.0f,
      //                            -1.5f * (float) camCosine);
    }
    else if (key.right) {

      turnangle += acturnangle;
      RotY -= turnangle;
      if (carspeed > (maxspeed - 0.2)) {
        currentRotY = RotY;
      }

  //    carRotY -= 0.2f;
  //    mycar.postRotate( -0.2f, 0.0f, 0.0f, 1.0f);
      groupcamandcar.postRotate( -turnangle, 0.0f, 1.0f, 0.0f);
      // if (carspeed==0)
      //     groupcamandcar.translate( -1.5f * (float) camSine, 0.0f,
      //                           -1.5f * (float) camCosine);
    }
    if ( (!key.right) && (!key.left)) {
      currentRotY = RotY;
    }
    while ((currentRotY)>360)
      currentRotY=currentRotY-360;
    while ((currentRotY)<0)
      currentRotY=currentRotY+360;
    System.out.println(currentRotY);
    int currentRotYangle =(int) currentRotY;
   // double rads = Math.toRadians(currentRotY);
   // camSine =Global.sinTab[currentRotYangle];
   // camCosine =Global.cosTab[currentRotYangle];
   double rads = Math.toRadians(currentRotY);
     camSine = Math.sin(rads);
     camCosine = Math.cos(rads);

    if (acspeed > 0.01f) {
      acspeed -= acspeed / 10;
    }

    if ( (key.right)) {
      if ( (carspeed <= maxspeed) && (carspeed >= 0)) {
        groupcamandcar.translate( -1.2f * carspeed * (float) camSine, 0.0f,
                                 -1.2f * carspeed * (float) camCosine);
        acspeed += 0.003;
        carspeed -= acspeed;

        if (carspeed <= 0f) {
          carspeed = 0f;
        }

      }

    }

    if ( (key.left)) {
      if ( (carspeed <= maxspeed) && (carspeed >= 0)) {
        groupcamandcar.translate( -1.2f * carspeed * (float) camSine, 0.0f,
                                 -1.2f * carspeed * (float) camCosine);

        acspeed += 0.003;
        carspeed -= acspeed;

        if (carspeed <= 0f) {
          carspeed = 0f;

        }

      }

    }

    if (key.key_num[1]) {
      float[] f = new float[3];
      groupcamandcar.getTranslation(f);
      System.out.println("carXXX");
      System.out.println(f[0]);
      System.out.println("carYYY");
      System.out.println(f[1]);
      System.out.println("carZZZ");
      System.out.println(f[2]);
    }
    if (key.key_num[3]) {

      System.out.println(this.currentfield + 1);
    }

    if ( (go) && (!key.right) && (!key.left)) {
      if (carspeed <= maxspeed) {
        groupcamandcar.translate( -1.2f * carspeed * (float) camSine, 0.0f,
                                 -1.2f * carspeed * (float) camCosine);

        carspeed += 0.1;

        if (carspeed >= maxspeed) {
          carspeed = maxspeed;
        }

      }

    }
    else if ( (!go) && (!key.right) && (!key.left)) {
      if (carspeed >= 0) {
        groupcamandcar.translate( -1.2f * carspeed * (float) camSine, 0.0f,
                                 -1.2f * carspeed * (float) camCosine);

        carspeed -= 0.05;

        if (carspeed <= 0f) {
          carspeed = 0;
        }

      }

    }
    if (key.up) {

      go = true;
      if (carspeed >= 0) {
        back = false;
      }

    }

    else if (key.down) {
      go = false;
      if (carspeed <= 0) {
        back = true;
      }
      if (back == true) {
        if (carspeed > -4) {
          groupcamandcar.translate( -1f * carspeed * (float) camSine, 0.0f,
                                   -1f * carspeed * (float) camCosine);
          carspeed -= 0.05;
        }
        else {
          groupcamandcar.translate(2.5f * (float) camSine, 0.0f,
                                   2.5f * (float) camCosine);
        }
      }
    }
    Checkfield(groupcamandcar, false);

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -