| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| es lebe die Luft Registriert seit: Nov 2010 Ort: this.stage
Beiträge: 91
| Steuerung in Flash-3D-Engine??
Hallo, Also ich brauche etwas Hilfe bei dem sog. "Mode 7". (Mode 7 - Wikipedia, the free encyclopedia) Diese Technik wendet Nintendo bei einigen GBA sowie NDS Spielen an ("Super Mario Kart Circuit", "Mario Kart DS", ....). Nun möchte ich einen ähnlichen Effekt in Flash erzeugen. Dazu habe ich erstmal eine Straße und die Umgebung gezeichnet. Alle Objekte habe ich zu einem MC konvertiert, da ich so nicht jedes Objekt ansprechen muss, sondern nur einen MC. Nun habe ich einfach den Z-Wert des Objektes erhöht um praktisch "nach vorne zu gehen" und um nach links oder Rechts zu gehen, lasse ich den MC auf der Z Achse rotieren ("rotation_Z"). Aber: Als ich an einem bestimmten Punkt war, funktionierte die Steuerung nicht mehr richtig. Wenn ich den MC nun rechts unten registrieren lasse (Rechtsklick auf Objekt --> In Symbol konvertieren --> Registrierung), funktioniert die Steuerung links oben nicht mehr usw. Also ich denke, dass ich bei der Steuerung definitiv was falsch gemacht hab. Wäre also einer so freundlich, und würde mir bitte erklären, wie man in einer Flash-3D-Engine die Steuerung programmiert? Links zu richtigen Methoden/Objekten/Eigenschaften der API und eine Erklärung, wie ich sie einsetzen muss, wären sehr hilfreich. MfG, AIR-Fan |
| | |
| | #2 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
|
a) wenn ich das richtig deute, dann ist das kein 3D, sondern nur eine fläche die gedreht wird. dafür gibts viele lösungen, musst mal danach suchen gurgel mal und dann ausspucken: flash 3d steuerung flash 3d labyrint z.b. ist nicht genau das selbe, geht aber in die richtung gotoAndPlay Flash Tutorials -- 3D Maze b) 3D-engine damit sind i.d.R. programmpakete gemeint, die richtiges 3D unterstützen/anbieten. auch da mal nach suchen: flash 3d engine wenn du sowas einsetzen willst, dann sage uns welche.
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de |
| | |
| | #3 (permalink) |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.500
|
ich weiß nicht, ob dir das was bringt, aber ich hab mal mein erstes cs5-3d-experiment rausgesucht. hab das damals alles nur im frame runtergetippt und nicht weiter verfolgt. daher musst du leider mit diesem spaghettiding klar kommen. sieht leider echt übel aus, aber vielleicht findest du da drin ja was, das dir weiterhilft. mfg sx |
| | |
| | #4 (permalink) |
| es lebe die Luft Registriert seit: Nov 2010 Ort: this.stage
Beiträge: 91
|
Hi, Danke euch beiden erstmal. @hgseib: Das Projekt beinhaltet das was ich suche, jedoch kann ich es nicht finden. Ich versuche es mal so gut wie möglich zu beschreiben: Ja, ich versuche einen 3D Effekt zu imitieren. Das im Titel ist dann wohl falsch - sorry. Wenn man auf den kleinen roten Knopf daneben drückt, dann erscheint eine Ansicht von oben. Die Funktion beinhaltet schon, was ich brauche. Nämlich, es wird immer von dem Punkt, wo man sich befindet gedreht. Nicht von links oben, Mitte oder sonstwo. Befinde ich mich in dem "Spiel" ganz oben, dreht sich das Ding von dem Punkt ganz oben. Befinde ich mich rechts unten, dreht es sich rechts unten. Oder ein Beispiel aus Flash Pro. Ich habe ein Objekt vor mir. Dieses möchte ich drehen. Rechtsklick --> Frei transformieren. Nun erscheinen viele schwarze und ein weißer Punkt (in CS5 zumindest ...). Wenn ich den weißen Punkt ganz oben hinsetze dreht es sich oben usw. Also es dreht sich immer um den Punkt herum. Meine Frage: Gibt es einen Weg, den Punkt per ActionScript zu bestimmen? Also wenn ich ein anderes Objekt darauf setze, soll sich das um das drehen. Wenn nein, wie hat es der von der Seite dann zusammengebracht? Und das brauche ich bei 3D für die Befehle rotation_X/Y/Z. Wenn ich ein Objekt in einen MC verwandeln will, kann ich in dem Fenster die Registrierung auswählen (in CS5 heißt es zumindest so ...). Die Registrierung sollte aber bei einem anderen Punkt liegen, dh. bei dem Spieler. Ich hoff das ist verständlich ... Wenn nicht, bitte schreiben. MfG, AIR-Fan |
| | |
| | #5 (permalink) |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.500
|
sind genau die befehle, die du in meinem keylistener findest: appendRotation() und appendTranslation() gedreht wird wie immer um den ursprungspunkt, des mc (daher das ganze gepacke in container) ansonsten musst du nach der rotation nochmal entsprechend versetzen |
| | |
| | #6 (permalink) |
| Techniker Registriert seit: Sep 2003 Ort: 64807
Beiträge: 16.326
| aM laboratory da gibts/gabs glaube ich auch mal quelltext dazu? musst halt mal ein bisschen rumstöbern. suche: flash mariokart script geht da noch was? http://board.flashkit.com/board/show...hreadid=465420
__________________ die ultimative antwort auf alle programmierfragen: der debugger mfg h.g.seib www.SeibsProgrammLaden.de Geändert von hgseib (21-03-2011 um 18:08 Uhr) |
| | |
| | #7 (permalink) |
| es lebe die Luft Registriert seit: Nov 2010 Ort: this.stage
Beiträge: 91
|
Was ich aus der API schließe, gibt es also keine Möglichkeit, den Ursprungspunkt einem Objekt zuzuweisen? (ohne Matrix3D) Also wenn ich MC1 drehe, dann soll MC2 den Ursprungspunkt darstellen. MfG, AIR-Fan EDIT: @hgseib: Das wäre was ich ich suche .... Ist der Autor davon nicht hier im Forum? Geändert von AIR-Fan (21-03-2011 um 18:13 Uhr) |
| | |
| | #8 (permalink) |
| [+] Registriert seit: Dec 2002 Ort: cologne
Beiträge: 2.271
|
Worum geht es denn genau? Um die Darstellung oder die Steuerung? Zur Darstellung würde ich heute einen Pixelbender Filter schreiben, der die Plane (Floor) zeichnet. Alles andere sind Billboards, die mit Skalierung und einfachem Z-Sorting in die Welt platziert werden können. Die Steuerung sollte mit einer Matrix gemacht werden. Darin ist die Translation (Position) und die Rotation der Kamera gespeichert. Ich habe noch nicht viel Erfahrung mit der 2.5D API von Flash10, aber im jeden Fall funktioniert die Matrix für die Billboards und den Floor gleichermaßen. Wahrscheinlich kann man den Floor auch mit einem MovieClip machen. |
| | |
| | #9 (permalink) |
| es lebe die Luft Registriert seit: Nov 2010 Ort: this.stage
Beiträge: 91
|
Also mit der Klasse Matrix habe ich bereits gearbeitet. Es geht um die Steuerung. In deinem Mario Kart Beispiel hast du das super gelöst. Egal wo sich das "Kart" befindet, die Umgebung dreht sich immer um das Kart. Sowas versuche ich auch zu erzeugen. Bisher habe ich immer mit rotation_X/Y/Z die Umgebung gedreht. Aber da dreht der MC sich immer um den Ursprungspunkt, nicht um eine von mir durch ActionScript festgelegte Position (in deinem Beispiel das Auto). Verstehst du was ich meine? MfG, AIR-Fan |
| | |
| | #10 (permalink) | |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.500
| Zitat:
aber die mode 7 geschichte hat halt seinen ganz eigenen charme was die darstellung angeht. abgesehen davon kann es passieren, dass das 3d-objekt zu groß ist und nicht gezeichnet werden kann. es wundert mich ehrlich gesagt gerade, dass es beim angehängten beispiel funktioniert | |
| | |
| | #11 (permalink) |
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.500
|
hey könnt ihr mir mal nen gefallen tun und rückmeldung geben, ob das bsp oben und das hier bei euch funktioniert? ING hat hiermit wohl probleme (ihm gehen die mcs komplett in die pampa flöten), aber bei mir läufts tadellos. würde mich interessieren woran das liegt. danke schon mal sx edit: wir haben den fehler gefunden. scheinbar ein bug im fp unter ~10.1 aber ihr könnt ja bescheid geben, wenn ihr das evtl. noch genauer eingrenzen könnt. man weiß ja nie wofürs gut ist. Geändert von shin10 (23-03-2011 um 02:40 Uhr) |
| | |
| | #12 (permalink) | |
| es lebe die Luft Registriert seit: Nov 2010 Ort: this.stage
Beiträge: 91
| Zitat:
Wo ist der EventListener für Keyboard.LEFT und Keyboard.RIGHT bzw. wie wird das gesteuert? Setzt du mit dem die Position? Code: var kPos:Vector3D = kart.transform.matrix3D.position; pane.transform.matrix3D.appendRotation(dir, Vector3D.Y_AXIS, kPos); ![]() MfG, AIR-Fan EDIT: Also was ich so von hier hab: flash.geom.Matrix3D (ActionScript 3.0), steht, dass ich mit appendTranslation() den Registrierungspunkt bestimmen kann, den ich später aber wieder löschen muss? Oder irgendwie so? Mir ist aber trotzdem schleierhaft, wo ich definiere, mit welchen Tasten das Objekt gedreht wird ... Aus der API: Code: myObject.z = 1;
myObject.transform.matrix3D.appendTranslation(10,10,0); //Definierung des Punkts?
myObject.transform.matrix3D.appendRotation(1, Vector3D.YAXIS); //Drehung ...
myObject.transform.matrix3D.appendTranslation(-10,-10,0); //Löschung?? Geändert von AIR-Fan (23-03-2011 um 20:13 Uhr) | |
| | |
| | #13 (permalink) | ||
| in the boondocks Registriert seit: Feb 2006 Ort: Augsburg
Beiträge: 3.500
| Zitat:
PHP-Code: Zitat:
damit drehe ich pane (den boden) um dir(ection) grad um die y-achse am punkt kPos (der kartposition) ich seh aber auch gerade, dass ich da nicht ganz bei der sache war. ich hab da eine ganz beknackte mischform zamgeschrieben. einfacher wäre es natürlich nicht das kart zu verschieben, sondern nur das level. dann sieht das ganze so aus: PHP-Code: Geändert von shin10 (23-03-2011 um 21:11 Uhr) | ||
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| App Engine und Flash | Henning06 | Flash und Datenbanken | 0 | 01-07-2010 07:27 |
| Flash Search Engine SDK 1.0 | Master of Disas | Flash 4 und Flash 5 | 0 | 23-06-2003 16:08 |
| 3D Engine in Flash | komashooter | ActionScript 1 | 5 | 15-03-2003 16:55 |
| Engine in Flash | Nightflyer | Softwarearchitektur und Entwurfsmuster | 2 | 08-02-2003 10:58 |
| 3D Engine für Flash | AcidProof | Flash MX | 4 | 11-05-2002 21:46 |