Drehung des Raumes

  • Drehung des Raumes

    Ich habe hier soweit eigentlich nichts gefunden, was meiner Frage entspricht.
    Vielleicht habe ich auch falsch gesucht, aber nun mache ich ein neues Thema auf:

    Ich möchte, dass ich einen Raum drehen kann. Und zwar so,
    dass alle Plattforman und so weiter mit gedreht werden.
    Mit "view_angle" klappte es nicht, betrifft ja schließlich
    auch nur das View...
    Wie kann ich das nun bewerkstelligen?

    Magical dream time!
  • Du müsstest das alles extra machen, wenn so überhaupt geht...
    Wenn der View gedreht wird änderst du ne Variable z.B. von 0 auf 1 und bei allen objecten überprüfst du, ob die Variable 1 ist. Wenn ja, da werden sie gedreht...

    gamer
    Aktuelles Projekt: Aufbau - Strategiespiel.
    Aktueller Entwicklungsschritt: Planung | Grundengine entwickeln.

    Wichtig ist nicht, besser zu sein als alle anderen.
    Wichtig ist, besser zu sein als du gestern warst.





  • Naja, was du machen könntest wäre ein Script selber schreiben, welches alle Objekte im Raum manuell verschiebt.
    Ich hatte mir das in etwa so vorgestellt:

    GML-Quellcode

    1. with (all)
    2. {
    3. i=point_distance(room_width/2,room_height/2,x,y);
    4. ii=point_direction(room_width/2,room_height/2,x,y);
    5. x=room_width/2+lengthdir_x(i,ii+bla);
    6. y=room_height/2+lengthdir_y(i,ii+bla);
    7. image_angle+=bla;
    8. direction+=bla;
    9. }
    Bla musst du dann natürlich noch durch eine konkrete Zahl austauschen (oder die Variable irgendwo bestimmen).

    Das Problem dabei ist, dass Objekte in den Ecken des Rooms dann möglicherweise nach außerhalb verschoben werden, denn auch wenn man die Objekte verschiebt, so kann man den Raumschnitt an sich ja schlecht drehen.
    Außerdem wäre das dann inkompatibel mit den Tiles... diese zu drehen geht vll auch irgendwie, da habe ich aber keine Idee wie man das realisieren könnte.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik
  • Ich weiß nicht genau wie der Raum aussieht, aber ich gehe mal von einem Zimmer aus, wo mehrere Objekte drinn herum stehen.

    Das zu realisieren ist etwas knifflig, aber sowas ähnliches habe ich in einem RTS drinnen.
    Nehmen wir mal an, dass der Drehpunkt bei x=100 und y=100 ist und der erste Drehgegenstand eine Vase.

    GML-Quellcode

    1. Drehwinkel = i; //i gibt den Winkel an, in die der Raum gedreht (optisch jedenfalls) i kannst du vielleicht in einer FOR-Schleife nehmen, dann sieht es so aus, als dreht sich der Raum
    2. wox = Vase.x-100; //!X-Abstand! zwischen Drehpunkt und Vase
    3. woy = Vase.y-100; //!Y-Abstand! zwischen Drahpunkt und Vase
    4. dist= point_distance(100,100,Vase.x,Vase.y) //Entfernung zwischen der Vase und dem Drehpunkt
    5. winkel = point_direction(100,100,wox,woy)+Drehwinkel; //Winkel zwischen Drehpunkt und Vase
    6. sx = lengthdir_x(dist,winkel);
    7. sy = lengthdir_y(dist,winkel);
    8. Vase.x = Vase.x + sx;
    9. Vase.y = Vase.x + sx;


    Okay, so ungefähr ist es bei mir. Vielleicht ist hier und da eine überflüssig geschriebene Vase, aber diese nur wegen dem Verständniss. Wie ich am besten das mit sx und sy erkläre weiß ich nicht. Stell dir einfach vor du hast auf einem Blatt nen Strich und sollst sagen wieviele cm der nach Rechts und nach Oben geht (vom Start- zum Endpunkt).

    Okay, kann das grad nicht sofort testen, aber in die Richtung geht das. Das schlimme daran: dieser Code muss in jeden Objekt sein, das im Raum zu sehen ist. Damit wird der Raum gedreht und du kannst immernoch handeln. Wenn du dort eine Spielfigure bewegst, dann solltest du zusehen, das auf diese nur während der Drehung dieser Code zutrifft, ansonsten könnte es passieren, dass deine Figur nach oben läuft, obwohl du nach rechts gehen willst.
    (hab das nie gemacht, könnte aber passieren ?()

    Okay, viel Text, viel Spaß...

    Edit: Oh, da war jemand schneller :D
    Autosignatur für:

    Danke, Sorry usw. wenn ich mal was vergesse
    ...

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

  • Original von Frosti
    Das schlimme daran: dieser Code muss in jeden Objekt sein, das im Raum zu sehen ist.


    Du kannst doch auch als objekt all verwenden.
    Oder mit einem Parent?

    Magical dream time!
  • Original von Frosti
    eine with(all)-Anweisung sollte auch gehen.

    Parents, habe ich mich nicht beschäftigt, könnte aber nach der HIlfe auch funktionieren.
    Parents funktionieren auch, aber es ist imho Blödsinn extra für sowas ein Parent für alle Objekte zu erstellen.
    Hier werden sie geholfen:
    [Regeln] [GML] [Hilfe] [Suche] [Posten] [Duden.de]
    [Wenn das alles nicht mehr hilft] [Dunning-Kruger]


    "Die Vernunft sollte Autorität definieren; nicht umgekehrt!"
    "Selber denken regt das Gehirn an."
    - Niffel f.k.a. Kilik