Problem mit sprite_offset()

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

  • Problem mit sprite_offset()

    Hallo Community!

    Ich war schon lange nicht mehr hier, da ich keine Probleme mit GM mehr hatte. Nun habe ich doch wieder eins. Ich schildere mal die Situation:

    Ich habe ein Sprite namens spr_Auto1. Den selben Namen auch im Objekt. Also obj_Auto1. Zur Steuerung: Wenn ich Gas gebe (W), soll Origin weiter unten sein. Wenn ich rückwärts/bremse (S) fahre, weiter oben. Hier der Code im Step Event:

    GML-Quellcode

    1. image_angle = direction-90;
    2. if (keyboard_check(ord('W'))) {speed += 1 sprite_set_offset(spr_Auto1,87.5,303)}
    3. if (keyboard_check(ord('S'))) {speed -= 1 sprite_set_offset(spr_Auto1,87.5,99)}
    4. if (keyboard_check(ord('A'))) {direction += 2}
    5. if (keyboard_check(ord('D'))) {direction -= 2}
    6. if (speed >= 10) {speed = 10}
    7. if (speed <= -3) {speed = -3}


    Wenn ich nun W oder S drücke, "springt" das Sprite zum angegebenen Offset. Das Offset soll aber im Sprite geändert werden. Ich befürchte, dass Origin und Offset nicht das selbe bedeutet. Frage: Gibt es eine Möglichkeit das "Origin" im laufenden Spiel zu ändern?

    Um eine Antwort bin ich euch sehr dankbar. :)
  • Meines Wissens ist das nicht möglich.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • sprite_set_offset(ind,xoff,yoff) Setzt das Offset des Sprites mit dem angegebenen Index.
    sprite_set_bbox_mode(ind,mode)Setzt den Begrenzungsrahmen des Sprites (0=automatisch, 1=gesamtes Bild, 2=manuell).
    sprite_set_bbox(ind,left,top,right,bottom) Setzt den Begrenzungsrahmen des Sprites mit dem angegebenen Index. Funktioniert nur, wenn dieser als manuell eingestellt wurde.
    sprite_set_precise(ind,mode) Soll das Sprite mit dem angegebenen Index präzise Kollisionserkennung benützen (true oder false).


    Offset und origin sind dasselbe. Du hast es eh richtig gemacht. Es ist klar dass das sprite dann springt wenn du sein origin veränderst und das objekt
    selbst nicht. Wenn du verhindern willst dass das sprite springt musst du auch die x-/y-werte des objektes verändern.

    © 2008 by Teamgrill Productions
  • Hm O.K. Ich werke noch ein bisschen daran herum. Ich melde mich wieder, wenn's funzt - oder auch nicht. Und vielen Dank, dass ich nun weiss, dass Offset und Origin die selben Dinge sind. Habe zwar die Hilfe dazu gelesen, hab's aber irgendwie nicht mitgekriegt. Das mit X und Y verändern klingt absolut logisch.

    Bis denne! :D
  • Jeppie. Es funktioniert - auch ohne sprite_offset(). Nun aber zu einem anderen Thema (darum auch der Doppelpost).

    Ich habe jetzt das Problem, dass eine Blitzlicht-Instanz erstellt wird. Diese sitzt am Anfang an der korrekten Stelle. Doch sobald ich das Fahrzeug nach links oder rechts drehen lasse (direction), ist die Instance völlig am falschen Ort. Weiss jemand, wie ich einen 'fixen' Punkt festlegen kann?

    Vielen Dank. :)

  • Original aus der Hilfe
    lengthdir_x(len,dir) Gibt die horizontale x-Komponente von dem Vektor bestimmt durch die gegebene Länge und Richtung wieder.
    lengthdir_y(len,dir) Gibt die vertikale y-Komponente von dem Vektor bestimmt durch die gegebene Länge und Richtung wieder.
    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