3d-Raum Zentrierung des Raumes an der Perspektive der Kamera [Flash 11]
| Beiträge: 28 Registriert: Sep 2011
| 03.10.2011, 23:26
Hi,
ich erzeuge mehrere Instanzen diese verteile ich zufällig im Raum x y z und weise sie einem Sprite zu. Diesen zentriere ich anfangs so das sich die "Camera" im Zentrum des Raums befindet :
ActionScript:1 2 3 | mySprite.y = stage.stageHeight/2;
mySprite.x = stage.stageWidth/2;
mySprite.z =zbreite/2;
|
hier verteile ich die instanzen im definiertem Raum (randomNumber erzeugt eine zufällige zahl zwischen minimum und maximum):
ActionScript:1 2 3 | mc.x=randomNumber(-xbreite,xbreite);
mc.y=randomNumber(-ybreite,ybreite);
mc.z=randomNumber(-zbreite,zbreite);
|
Und hier die Zuweisung der Tasten (A, W , S ,D R, F für die Bewegung und die Pfeiltasten für die Rotation)
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 | if (aKeyDown) { mySprite.x += moveSpeed; cam_point_x += moveSpeed; }
if (dKeyDown) { mySprite.x -= moveSpeed; cam_point_x -= moveSpeed; }
if (sKeyDown) { mySprite.z += moveSpeed; cam_point_z += moveSpeed; }
if (wKeyDown) { mySprite.z -= moveSpeed; cam_point_z -= moveSpeed; }
if (rKeyDown) { mySprite.y += moveSpeed; cam_point_y += moveSpeed; }
if (fKeyDown) { mySprite.y -= moveSpeed; cam_point_y -= moveSpeed; }
if (pfeilLinks) { mySprite.rotationY +=rotationSpeed; }
if (pfeilRechts) { mySprite.rotationY -= rotationSpeed; }
if (pfeilOben) { mySprite.rotationX -= rotationSpeed; }
if (pfeilUnten) { mySprite.rotationX += rotationSpeed; }
|
cam_point_x, y z verwende ich als Hilfsvariablen für die aktuelle cameraposition.
Mein problem: Wenn man sich nach hinten bewegt (S drücken) und danach die Pfeiltasten benutzt merkt man dass sich der Raum um sein Zentrum dreht ich möchte jedoch dass sich der Raum bei jeder Bewegung um das Zentrum der Camera dreht so hätte man das gefühl dass sich die Camera dreht und nicht der Raum.
Wäre für jeden Ratschlag dankbar. Irgendwie hänge ich gerade.
Hab den Raum verkleinert damit ihr sehen könnt was ich meine.
Hier könnte ihr aktuelle version sehen:
LINK | Geändert von bilblo am 04.10.11 um 09:15 Uhr | |
| | Beiträge: 190 Registriert: May 2007
| 07.10.2011, 13:04
hallo,
weiß nicht genau, ob dir das bei deinem problem hilft,
aber so
ActionScript:1 2 3 4 5 | var pp:PerspectiveProjection = new PerspectiveProjection();
//pp.fieldOfView = 100;
pp.projectionCenter = new Point(x_pos, y_pos);
mc.transform.perspectiveProjection = pp;
|
kannst du das "zentrum" eines mcs festlegen. wenn du ihn im 3d space drehst, richtet sich die rotation nicht mehr an der stage sondern am neuen projectionCenter aus. | |
| Ähnliche Beiträge zum Thema | |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News
Regeln & Bedingungen
|