Spieler in View positionieren

  • GM 8

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

  • Spieler in View positionieren

    Hey!

    Ich hab mich seid langen mal wieder rangesetzt weil mir ein paar Ideen kamen. Aber in der Umsetzung hängt's jetzt ;)

    Naja das, ich nenne es mal "System", ist schlecht zu erklären also hab ich mal n Example gleich mit angehangen.

    Naja gelenkt wird mit den Pfeiltasten. Hoch Runter ist Vor Zurück und Links Rechts dreht die figur. Wenn die Figur sich dreht, dreht sich der\die View mit. Das funktioniert auch alles 100%ig. Allerdings ist der Spieler genau in der mitte der View. Ich wollte das jetzt aber so machen, das der spieler Mittig am unteren Rand ist. Sprich der Spieler soll bei z.b einer 640X480 größe etwa bei der Position x320 und y20 im !View! sein. Auch wenn die View sich dreht.

    Hoffe ihr versteht wie und was ich meine ;)

    MfG Slim_Jim
    Dateien
    • test.rar

      (11,14 kB, 184 mal heruntergeladen, zuletzt: )
  • Ist klar, warum das nicht funktioniert.
    Du benutzt das Objekt-Controlling vom View, welches du aber gar nicht eingestellt hast.
    Wenn der Spieler immer die selbe Position im View haben soll wäre es besser die Position direkt zu benutzen.

    GML-Quellcode

    1. view_xview[0] = o_player.x - view_wview[0] / 2;
    2. view_yview[0] = o_player.y - 20;


    mfg TWS
  • @ TheWhiteShadow:

    GML-Quellcode

    1. view_xview[0] = o_player.x - view_wview[0] / 2;
    2. view_yview[0] = o_player.y - 20;


    müste
    1. so ausehen da das orig des players centriert ist

    GML-Quellcode

    1. view_xview[0] = o_player.x - ((view_wview[0] / 2) - (o_player.sprite_width / 2));
    2. view_yview[0] = o_player.y - ((view_hview[0] - 20) - (o_player.sprite_height / 2));


    2. das selbe wollt ich auch erst posten ... bis ich es getestet hatte und festellen muste das dies auch nicht so funktioniert wie er es gern hätte .... da damit die position im view fest ist und sich das view aber dret und somit auch der player die position ändert ...


    man müste die position des spielers in der kreisbewegung des views berechnen ... aber da habe ich grad kein plan wie ^^ ...
    ---- wer fehler findet darf sie behalten ---

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von Deathshadow ()

  • Ok danke erstmal!

    Jetzt müsste nur noch der Drehpunkt von der Mitte nach unten gesetzt werden mit der besagten berechnung in der Kreisbewegung. Aber wie das in GML gehen soll, keine ahnung! ...
    Ich setz mich nach Feierabend noch mal ran und probiere rum. Aber wenn jemand eine Lösung parat hat, gerne!

    MfG Slim_Jim
  • Geht schon, sogar relativ einfach:

    View Controller Objekt - Step:

    GML-Quellcode

    1. view_angle[0]=obj_Player.direction
    2. view_xview[0]=obj_Player.x+lenghtdir_x(300,obj_Player.direction)+lenghtdir_x(120,obj_Player.direction+90)
    3. view_yview[0]=obj_Player.y+lenghtdir_y(300,obj_Player.direction)+lenghtdir_y(120,obj_Player.direction+90)


    d.h. der View-Nullpunkt wir vom Spieler aus nach oben und dann nach links verschoben. Aber irgendwie meine ich, dass es einfacher gehen müsste - nur hab ich keinen Schimmer, wie.
  • @ Chaos Creator: die geht leider auch nicht ... das p_object ist zwar am unteren rand dreht sich aaber aus dem bild raus ...

    ich habe mir jetzt mal die nacht um die ohren geschlagen da mir das keine ruhe gelassen hat ^^ ...
    habe kreiskoordinaten berechnungen versucht und dan gemerkt das ich auf dem holzweg binn ..

    naja wie dem auch sei ... ich habe es jetzt durch büffeln der hilfe, und nen bils experimentieren hinbekommen ^^ ...

    alles in dein c_view script

    GML-Quellcode

    1. var PX, PY, VX, VY, VA, XX, YY, LX, LY;
    2. // dreht object image und das view
    3. image_angle = direction;
    4. view_angle[0] =- direction + 90;
    5. // gewünschte object position
    6. PX = (view_wview[0] / 2) - (sprite_width / 2); // X position des Objectes
    7. PY = (view_hview[0] - 20)- (sprite_height / 2); // Y Position des Objectes
    8. // mittelpunt des views ermitteln
    9. LX = view_wview[0] / 2; // abstand X von rand zur mitte des Views
    10. LY = view_hview[0] / 2; // abstand Y von rand zur mitte des Views
    11. // relative mitte des views ermitteln
    12. VX = LX - PX; // relative X koordinate
    13. VY = LY - PY; // relative Y koordinate
    14. VA = -view_angle[0]; // negativer view drehwinkel
    15. // View positionieren
    16. XX = x + lengthdir_x(VX, VA) - lengthdir_y(VY, VA); // X position des views anhand der Relativen mitte berechnen
    17. YY = y + lengthdir_y(VX, VA) + lengthdir_x(VY, VA); // Y position des views anhand der Relativen mitte berechnen
    18. view_xview[0] = XX - LX; // view an X position verschieben
    19. view_yview[0] = YY - LY; // view an Y position verschieben
    Alles anzeigen


    bitte schon und viel spass damit ^^
    ---- wer fehler findet darf sie behalten ---