Dem Game Maker Rechnen beibringen

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

  • Dem Game Maker Rechnen beibringen

    Hi.

    Die Arbeit an meinem momentanen Projekt (<- siehe Links) geht gut voran, allerdings treten gerade haufenweise Probleme auf. ALLE beruhen auf folgendem verwirrendem Problem. Ich habe z.B. ein Objekt und einen View, die sich in der selben geschwindigkeit bewegen sollten. Also habe ich ein Controllerobjekt:

    Im Create Event:

    GML-Quellcode

    1. global.Objectspeed = 300 / room_speed;
    2. Objekt.vspeed = global.Objectspeed * -1;


    GML-Quellcode

    1. view_yview[0] -= global.Objectspeed;


    Mit room speed 30 oder 150 funktioniert das Perfekt: Das Objekt ist genau so schnell wie der View. Wenn ich jetzt den room speed z.B. auf 300 stelle ist das Objekt allerdings schneller als der View. Bei room speed auf 1500 bewegt sich der View garnicht mehr das Objekt schon. Wenn ich werte habe, wie z.B. 90 (also KLEINER als 150 aber auch gut durch 300 teilbar) tritt das selbe Phänomän auf.
    Ich darf daher wohl annehmen, dass das nicht am Code liegt, sondern am Game Maker.

    Daher meine Frage: Wie kann ich dem Game Maker das Rechnen beibringen?? ?(
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Ich glaube weniger, dass das mit dem Game Maker zusammenhängt, sondern eher mit dem armen PC, den du da quälst.
    Hast du mal daran gedacht, dass ein Roomspeed von 30 oder auch 60 eventuell komplett ausreichen könnte?
    300? This is madness! This is SPARTAAAA! *hust* scnr... -.-
    Das bekommen die wenigsten handelsüblichen CPU überhaupt zustande, gerade im GM, der ja nicht gerade auf große Leistung optimiert ist.
    Alles weitere ist nicht nur Hardcore, sondern vor allem sinnlos, da kein normaler User einen Bildschirm mit 300 Hertz hat.
    Das wären 300 Neuberechnungen des Games pro Sekunde, das is 'ne ganze Menge Holz, und 4/5 davon für die Katz.
    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
  • Das schon, aber laut dem Debug-Fenster packt mein PC den Roomspeed von 150.

    Außerdem war das nur als beispiel gedacht. Und selbst wenn ich jetzt den Roomspeed auf 45 runterdreh wird nicht richtig berechnet. Folge: Der View ist schneller, als das Objekt.
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Naja, das liegt an der Art und Weise, wie die Geschwindgkeiten berechnet werden.
    Wenn du einem Objekt einen Speed zuweist, dann bewegt sich das Objekt pro Step 'vspeed' Pixel nach rechts.
    Liegt diese Zahl z.B. bei 1/2 dann bewegt sich das Objekt alle 2 Steps 1 Pixel (da es sich nicht 1/2 bewegen kann).

    Setzt du die Positionsdifferenz jeden Step neu, wird abgerundet, und was ist 0,5 abgerundet? Richtig: 0
    Das dürfte erklären, wieso sich der View nicht mehr bewegt.

    Fazit: in jedem Fall, in dem der Wert "global.Objectspeed" also keine ganze Zahl ist, wird die Geschwindigkeit von Objekt und View abweichen.
    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
  • Ok... Klingt soweit einleuchtend (und würde auch all die anderen massigen Fehler erklären...)

    Allerdings finde ich keinen Befehl um eine Geschwindigkeit für den View zu bestimmen... Was nun?
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Original von Firecool
    Allerdings finde ich keinen Befehl um eine Geschwindigkeit für den View zu bestimmen... Was nun?
    Einfach die View-Koordinate im Draw-Event festlegen mit:

    GML-Quellcode

    1. view_xview=object.x+(view_wview/2);
    2. view_yview=object.y+(view_hview/2);
    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
  • Das Problem ist nur, dass ich das beispiel hier relativ simpel galten habe. Da es nun aber notwendig wird noch eine weitere Einzelheit: Der View gibt die "Grundgeschwindigkeit" des Objekts an und bleibt IMMER gleich. Das Objekt hingegen hat zwar auch eine Geschwindigkeit, soll sich aber im View vor und zurück bewegen sollen. Also sollte ich etwas haben, mit dem der View sich immer konstant bewegt.
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage
  • Dann mach es, indem du den global.objectspeed abrundest (also mit floor();).
    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
  • Jo so funktionierts (allerdings mit ceil() statt floor(), da es sich um sehr kleine Variablen handelt. Aber sonst...

    Danke Kilk.
    Dies ist eine kreative Signatur: Stell dir genau JETZT etwas lustigs vor, das hier stehen könnte...

    Meine Homepage