Hi,
Kleines Rotationsproblem:
Bewegung in 2 Richtungen:
X und Z.
Geschwindigkeit speedX/speedZ
Ball rollt im begrenzten Spielfeld.
Sprich:
Wenn posZ>zMax speedZ*=-1;
...
Für die Rotation des Balls im 3dRaum in etwa:
speed = Math.sqrt(speedX*speedX+speedZ*speedZ);
angle = Math.atan2(speedZ, speedX)
//rotation:
gl.gl_Rotatef(gesRotation+=speed, Math.cos(angle),0,-Math.sin(angle));
So, der ganze Schmu haut auch soweit hin. Der Ball rollt wunderbar übers Spielfeld.
ABER:
jedesmal wenn er an der Spielbegrenzung abprallt, sprich
speedZ*=-1;
oder
speedX*=-1;
haut das für einen Frame mit der Rotation nicht mehr hin. Ist ganz logisch, weil sich die Drehrichtung hart ändert.
Bsp: nehmen wir an
speedX sei 0;
speedZ = 1;
gesRotaion ist 90;
nun ändert speedZ sein Vorzeichen.
Damit die Rotation noch passt muss
gl.gl_RotateF(90,0,0,1)
nach dem Vorzeichenwechsel zu
gl.gl_RotateF(270,0,0,-1)
werden.
Überseh ich da irgendwas oder muss ich das Problem anders angehen ?
Kleines Rotationsproblem:
Bewegung in 2 Richtungen:
X und Z.
Geschwindigkeit speedX/speedZ
Ball rollt im begrenzten Spielfeld.
Sprich:
Wenn posZ>zMax speedZ*=-1;
...
Für die Rotation des Balls im 3dRaum in etwa:
speed = Math.sqrt(speedX*speedX+speedZ*speedZ);
angle = Math.atan2(speedZ, speedX)
//rotation:
gl.gl_Rotatef(gesRotation+=speed, Math.cos(angle),0,-Math.sin(angle));
So, der ganze Schmu haut auch soweit hin. Der Ball rollt wunderbar übers Spielfeld.
ABER:
jedesmal wenn er an der Spielbegrenzung abprallt, sprich
speedZ*=-1;
oder
speedX*=-1;
haut das für einen Frame mit der Rotation nicht mehr hin. Ist ganz logisch, weil sich die Drehrichtung hart ändert.
Bsp: nehmen wir an
speedX sei 0;
speedZ = 1;
gesRotaion ist 90;
nun ändert speedZ sein Vorzeichen.
Damit die Rotation noch passt muss
gl.gl_RotateF(90,0,0,1)
nach dem Vorzeichenwechsel zu
gl.gl_RotateF(270,0,0,-1)
werden.
Überseh ich da irgendwas oder muss ich das Problem anders angehen ?