3D-Axis funktioniert nicht bei Zylinder im 2D Modus

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 3D-Axis funktioniert nicht bei Zylinder im 2D Modus

    Ich hab heute mal mit 3D ein kleines Problemchen:
    Ich bin dabei ein 2D-Spiel mit 3D Ellipsen und Zylindern zu machen. D.h. ich hab den 3D-Modus nicht aktiviert.

    Bei den Ellipsen funktioniert der Code d3d_transform_add_translation(xt,yt,zt) und danach der Code d3d_transform_set_rotation_axis(xa,ya,za,angle) super, d.h. der Ball dreht sich so, wie ich will und wird auch vernünftig gezeichnet.
    Wenn ich das ganze dann allerdings mit d3d_draw_cylinder(...) mache, springt der Zylinder einfach an irgendeinen Ort. Ich hab keine Ahnung warum....

    Was kann ich dagegen machen?
    kostenlose Android-Spiele:
    hexavirScribble Triple

    Mr. Peperonico auf Facebook
  • Ich kann mir unter deiner Beschreibung nix vorstellen. Kann es zufällig sein, dass der Zylinder auf 0,0 springt?
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ich hab da mal was hochgeladen.

    Die Zylinder sollten eigentlich auf gleicher Höhe sein, nur der rechte soll um 90° gedreht sein. Beim Ball funktioniert es doch auch.



    PS: Das ist mein 100ster Beitrag *freu*:D
    kostenlose Android-Spiele:
    hexavirScribble Triple

    Mr. Peperonico auf Facebook

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von RoFra ()

  • Ich kann keinen Höhenunterschied feststellen.

    Also ich würde es so machen:

    GML-Quellcode

    1. d3d_transform_set_scaling(1,1,1) //nicht erfordlich aber erwähne ich trotzdem mal weil es das erste sein muss wenn man es verwenden will
    2. d3d_transform_set_rotation_x(90) //x = 0, y=0, z=0 ist der Mittelpunkt
    3. d3d_transform_set_translation(x,y,0) // das muss nach rotation kommen
    4. d3d_draw_ellipsoid(-16,-16,-16,+16,+16,+16,bg_ball1,1,1,ecken)
  • einen um 90° gedrehten zylinder, der an seinen x und y koordinaten erscheint, muss man in etwa so drehen:

    GML-Quellcode

    1. // GML Code created with Smart Poly - Version: 1.30
    2. // © 2005 by VectorGames.de - All rights reserved!
    3. // primitive1
    4. draw_set_alpha(1); // Alphawert
    5. draw_set_color(8421504); // Farbe
    6. d3d_transform_add_translation(-x+0,-y+0,-z+0); // übersetzung der achsen
    7. d3d_transform_add_rotation_x(90); // drehung um die entsprechende achse
    8. d3d_transform_add_translation(x+0,y+0,z+0); // achsen zurücksetzen
    9. d3d_draw_cylinder(x-10,y-10,z-40,x+10,y+10,z+40,-4,1,1,0,16); der eigentliche zylinder

    sollte im entsprechenden event oder object noch mehr kommen, bzw. gibt es eine grobale translation/rotation sollte man den befehl d3d_transform_set_identity() vor und hinter dem entsprechendem code platzieren.

    nebenbei wird ein 3d zylinder im 2d modus als rechteckige fläche dargestellt. da man mit dem game maker auch texturierte polygone erstellen kann (wen wundert es, wenn man komplexere 3d modelle erstellen kann) sollte man auf diese zurückgreifen um rechenleistung zu sparen.

    EDIT: ach so.. du must eine z variable definieren oder einfach z aus dem code entfernen.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x