📄 hero.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 + -