Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

31

26.04.2014, 20:09

Woah ok Kinners, ich habs... Doch kein Logikfehler, sondern die Engine (oder ich interpretiere es mal so). Die Bedingung:

global.Path2 = path_position
global.timer9 = 2
if global.timer9 = 0 {
global.Path2 = 0

hat nicht ausgereicht. Aus irgendeinem Grund erfüllt sich die Bedingung nicht, selbst wenn der Timer 0 wird (wahrscheinlich überspringt er irgendwie die 0 und geht direkt von 1 auf -1 oder so). Ich habe es umgestellt auf:

global.Path2 = path_position
global.timer9 = 2
if global.timer9 >= 1 {
global.Path2 = 0

Und jetzt funktioniert es. Keine Ahnung warum das so ist, ich verstehe es nicht ganz, verbuche es aber eher als Engine-Problem.

Trotzdem danke Jungs!

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

32

26.04.2014, 20:54

Ganz ehrlich: Du machst dich gerade richtig lächerlich. Das ist ein Programmierfehler sondergleichen, auf den du vorher von mir und von iSmokiieZz hingewiesen wurdest. Du hast uns zwar widersprochen, aber so ist es eben einfach! Man muss sich als Fragender auch einfach mal helfen lassen. Wenn man jede Hilfe in den Wind schlägt und geradezu unhöflich darauf reagiert und seine Fehler einfach nicht einsehen will, sondern darauf beharrt, dass der Compiler oder die Engine schuld sein soll, dann kommt man nicht weiter.

Um dir deinen Fehler mal zu erklären:
Wenn du direkt vor der Prüfung, ob der Timer 0 ist, den Timer auf 2 setzt, dann wird er niemals 0 sein. Egal wo du den Timer verkleinerst.
Was du da gemacht hast, um das Problem zu lösen, mag zwar jetzt funktionieren. Aber dein System ist dann einfach grundlegend falsch. Du kannst auch alle Timer entfernen und einfach global.Path2 = 0 immer ausführen. Das würde dasselbe bewirken. Aber es ist definitiv nicht die Engine, die irgendwelche Werte überspringt.

Im Übrigen zeigt das auch, dass du den Debugger nicht richtig eingesetzt hast. Denn so ein Problem stellt man sehr schnell mit dem Debugger fest, weil man ja einfach mal die Timer beim Runterzählen verfolgen könnte.

33

26.04.2014, 21:00

Im Zweifelsfall ists immer ein Engine-Problem. ;)

MfG
Check

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

34

26.04.2014, 22:13

Oder eins der IDE oder des OS. Mehrfache Neuinstallation... :whistling:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

35

26.04.2014, 22:21

@Fred: Also jetzt machst DU dich langsam lächerlich, ganz ehrlich. Alles muss ich mir auch nicht gefallen lassen: Der Fehler lag daran, wie ich lange zuvor vermutete, dass die Funktion Path_Position nicht richtig funktioniert und DESHALB niemals erfüllt wird. Ich habe doch die Timer im Debugger angeschaut und die haben ausgelöst. Wenn du das mit den "Step Events" nicht verstehst (ich habe geschrieben, dass die Timer auf -1 pro Step stehen), gut, aber werfe mir nicht vor, dass ich nicht alles geprüft und versucht habe!

Was ich mir vorwerfen lassen muss, ist, dass ich nicht verstanden habe, dass ich die ganz Bedingung womöglich gar nicht benötige (wie du geschrieben hast, löst sie JETZT ohnehin immer aus aber das muss ich in einem Langzeittest prüfen). Von euch ist da aber auch keiner drauf gekommen, also besser ruhig sein, wenn man was nicht versteht. Trotzdem danke an alle anderen. Ohne eure Hinweise wär ich wohl nie drauf gekommen.

36

26.04.2014, 22:37

Zitat

Was mir grad spontan auffällt:

timer7 = 2
if timer7 = 0 {
Path2 = 0 //Pfad-Variable wird zurückgesetzt, um bei der nächsten Veränderung wieder auf 0 zu sein
}

was soll denn das? Die Bedingung wird nie erfüllt.

...

Zitat

global.timer9 = 2
if global.timer9 >= 1 {
global.Path2 = 0


Dass mit der Version nun die Bedingung IMMER wahr ist, wirst du sicher selber lösen können...

Ich denke das kann hier geschlossen werden, oder ;)
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

37

26.04.2014, 23:02

Ja das habe ich ja in dem Post davor erklärt, wahrscheinlich ist die Bedingung nicht notwendig, nur dass die Path_funktion so gar nicht tut, konnte ja auch keiner ahnen. Japp kann geschlossen werden, trotz der Missverständnisse: Vielen Dank an alle, vor allem an dich Smokie!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

38

27.04.2014, 08:41

Du liest nicht, was andere schreiben. Der Fehler liegt allein bei Dir und daran, dass Du nicht verstehst, was Du da eigentlich an Code geschrieben hast. Da brauchst Du auch gar nicht gegen Fred wettern, denn er hat Recht und Du nicht.
Dass das so schnell keiner gesehen hat liegt sicherlich auch daran, dass so übel (gar nicht) formatierten Code einfach mal keiner lesen will. Dir wurde ja mehrfach gesagt Du sollst Code-Tags verwenden und weigerst Dich dennoch.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige