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

Dreat

Frischling

  • »Dreat« ist der Autor dieses Themas

Beiträge: 86

Wohnort: Heilbronn

  • Private Nachricht senden

11

29.05.2015, 18:51

Zitat

So das ganze funktioniert auch soweit jetzt folgendes Problem man kann die Kamera mit WASD bewegen solange ich mich nach Oben oder Rechts bewege ist alles im grünen Bereich das Script erstellt da wo kein Terrain ist neues Terrain und da wo welches ist pasiert nichts. Jetzt passiert aber was seltsames und ich verstehe einfach nicht warum wenn ich mich nach Unten oder Links bewege scheint er irgendwie bereits vorhandenes Terrain gekonnt zu ignorieren und erstellt einfach immer weiter an der gleichen Stelle das gleiche Terrain, die FPS sinken auf ca. 2. Jetzt kommt für mich noch mehr Verwirrung dazu wenn ich mich jetzt wieder nach Oben oder Rechts bewege ist alles wieder in Ordnung die FPS steigen und alles funktioniert wie gewollt.


Er erstellt mir Terrain das ist ja mein Problem :D nämlich da wo schon Terrain ist und er sollte eigentlich kein Terrain erstellen.

12

29.05.2015, 19:17

Ach Schreck, ich hatte das auch so gelesen aber nen Tag später war es wohl nicht mehr so Presänt im Kopf :D
Sorry!

Also dann Frag ich jetzt nochmal direkt.
Unterscheidest du beim Links oder Rechts gehen in folgender Codezeile?

C-/C++-Quelltext

1
if (!FindGameObjectAt (new Vector2 (playerCam.transform.position.x + 50f, playerCam.transform.position.y)))


Wenn nicht, könnte trotzdem die "+50" das Problem sein. Normal müsstest du doch nach links mit "- 50" Prüfen oder nicht?
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dreat

Frischling

  • »Dreat« ist der Autor dieses Themas

Beiträge: 86

Wohnort: Heilbronn

  • Private Nachricht senden

13

29.05.2015, 19:21

Ja richtig, ich hatte anfangs auch schon eine zweite Abfrage mit -50 drin also in beide Richtungen aber da gab es das gleiche Problem

Ich schieb das Problem jetzt sowieso erstmal nach hinten da es nicht eines der wichtigsten Features ist.

14

29.05.2015, 19:51

Ja richtig, ich hatte anfangs auch schon eine zweite Abfrage mit -50 drin also in beide Richtungen aber da gab es das gleiche Problem


OK und die Zeile hattest du dann auch angepasst?

C#-Quelltext

1
createPos.x = Mathf.RoundToInt((playerCam.transform.position.x + 50f)/10);


Ansosnten fällt mir nur noch auf das die Position * 10 und später wieder durch 10 geteilt wird.

Aber dann sehe auch nichts mehr.
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Dreat

Frischling

  • »Dreat« ist der Autor dieses Themas

Beiträge: 86

Wohnort: Heilbronn

  • Private Nachricht senden

15

29.05.2015, 21:19

Ja hatte ich alles angepasst.

Mit dem *10 versetze ich das Komma im float und runde dann auf ganze Int, also 45 wird zu 4.5 dann runde ich auf 5 und mach dann wieder 50 draus das die Position stimmt.

16

29.05.2015, 23:04

ich meinte die Zeile:

C#-Quelltext

1
sprite.GetComponent<SpriteRenderer>().sprite = Sprite.Create(CalcNoise(xOrg*(createPos.x/10), yOrg*(createPos.y/10)), new Rect (0, 0, pixWidth, pixHeight), new Vector2 (0, 0));
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

17

02.06.2015, 14:08

Wie du schon richtig festgestellt hast: du solltest auf irgendeine Art speichern, an welcher Stelle du bereits welches Terrain generiert hast. Dann musst du auch kein komisches Zeug mehr mit Physik und Kollisionen machen, um zu erraten, ob schon Terrain vorhanden ist.
Ist das Vorhanden, musst du dich auch nicht mehr darauf beschränken, nur bei Bewegungen zu prüfen, ob Terrain generiert werden muss. Für den anfang wäre es einfacher, diese Prüfung immer durchzuführen. Macht man es richtig, dann wird auch nur so viel Terrain wie nötig erzeugt.
Bedenke, dass du mit den Fließkommazahlen (Vector2) aufpassen musst. Ganze Zahlen lassen sich, sofern sie nicht zu groß sind, problemlos darstellen, aber manche Zahlen mit Nachkommastellen (bspw. 0,1) können nicht mit binären Fließkommazahlen (endlicher Länge) dargestellt werden.
Du könntest an den einen oder anderen Stellen den Code besser lesbar gestalten, indem du über Erweiterungsmethoden die vorhandenen Strukturen um Methoden erweiterst, statt die entsprechenden Berechnungen selbst unter den Code zu mischen. Ein Beispiel wäre dabei eine Rundungsmethode für Fließkommazahlen, sowie eine Überladung, die auf eine bestimmte Anzahl von Nachkommastellen rundet (bspw. -1 Nachkommastellen -> Runden auf Zehner).

Weiterhin solltest du nicht einfach einen festen Wert (50) wählen, sondern dies anhand der Kamera ermitteln. Du kennst den FOV-Wert, Abstand der Kamera zum Terrain und größtmögliche Tiefpunkte des Terrains bzw. du kennst den orthographicSize, womit du die notwengide Höhe bekommst, und anhand des Seitenverhältisses kann der richtige Wert für die Breite ermittelt zu werden. Solltest du später einen Zoom einfügen, wäre das bereits berücksichtigt (da das immer über die Manipulation einer der Werte durchgeführt wird).
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Dreat

Frischling

  • »Dreat« ist der Autor dieses Themas

Beiträge: 86

Wohnort: Heilbronn

  • Private Nachricht senden

18

03.06.2015, 20:15

Danke Koschi für deine Bemühungen.

@Sacaldur danke auch dir für deine Hilfe ich werd' mich mal demnächst hinsetzen und das ganze von neuem schreiben. Ich weiß das mein Codingstil nicht der schönste ist vielleicht liegen darin auch manchmal meine Probleme das ich selbst den Überblick verliere ich sollte mal daran arbeiten :)

Werbeanzeige