Problem mit view angle

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

  • Problem mit view angle

    Guten Abend,

    Ich versuche bei meinem Top-down game die view angle mit der spieler-direction zu ändern.
    Das ist ja ganz ok, wenn der Spieler zentral im Bildschrim ist:
    view_angle[0] = direction;
    view_xview[0]=x-960;
    view_yview[0]=y-540; (Ich benutze 1920x1080 resolution)

    Ich will den Spieler aber immer am unteren Rand des Bildschrimes (x-960, y-880) haben bei egal welcher rotation;
    ich habe schon über eine stunde alles mögliche mit cos/sin/lenghtdir_x,... probiert, es aber nicht geschafft

    Ich hoffe ihr könnt mir helfen.
    Danke schjon mal im vorraus :)
  • Wär natürlich vorteilhaft zu wissen was du schon probiert hast.
    Erster Google-Treffer: 2.2.2.2 Rotation um einen beliebigen Punkt
    Eigentlich ist nur der Text wichtig, das mathematische wird gleich zu kompliziert, wenn man nicht in der Materie ist ;)
    ​- Verschieben des Koordinatensystems in den Drehpunkt (M1)
    - Drehung um den Ursprung des neuen Koordinatensystems (M2)
    - Translation wieder zurück (M3)


    Sprich:
    - Bestimme Richtung und Entfernung von Char zum View-Mittelpunkt. (point_distance und point_direction)
    - Schiebe den View auf den Char (Mitte auf Mitte).
    - Drehe den View wie gehabt.
    - Bewege nun den View um die vorher bestimmte Entfernung zurück, aber addiere zur bestimmten Richtung von davor den Drehwinkel des Views. (length_dir)
  • super, vielen Dank!
    Nach etwas herumprobieren hat dann die letzte Formel auf der Seite geholfen:
    x-x1 entspricht bei mir 0 (da es mittig sein soll) und y-y1 entspricht 340 (200 pixel vom unteren rand weg).

    Das fertige produkt, das meinen Helden am mittigen unteren Bildschirm darstellt sieht nun wie folgt aus:

    view_xview[0]=x-960; //960 ist hälfte der x-resolution (1920)
    view_yview[0]=y-540; //540 = hälfte der y resolution (1080)
    view_angle[0] = direction;
    view_yview[0]-=cos(degtorad(direction))*340;
    view_xview[0]+=sin(degtorad(direction))*340;
  • Gregor schrieb:

    view_xview[0]=x-960; //960 ist hälfte der x-resolution (1920)
    view_yview[0]=y-540; //540 = hälfte der y resolution (1080)


    Dieser Teil des Codes kommt mir in dem Code irgendwie sinnlos vor... naja egal, kann ich verstehen, dass man einfach alte Codes im Editor stehen lässt :D passiert wohl jedem mal
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D