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

1

09.02.2012, 13:41

Bewegliche Kugel in City-Modell integrieren

Ho Ho Ho!

Ich würde gerne eine Kugel/Ball in das City Modell (Beispiel 3.2) integrieren und zwar so, dass ich mich mit dieser Kugel durch das Modell bewegen kann.
Habe nun überlgt, mir den Bal auf Breakanoid zu "klauen". Ich vermute aber mal dass das wesentlich umständlicher ist als den selbst zu integrieren. Im Endeffekt muss ich auch ne Kollisionserkennung drin haben. Also der Ball soll zB am Haus abprallen...

Gibt es dazu ein gutes Tutorial?

Danke im Voraus...

FSA

Community-Fossil

  • Private Nachricht senden

2

09.02.2012, 13:56

Kollisionserkennung wird schwierig. Da müsstest du dir das City Modell unterteilen und mit bounding sphere testen. Ich hoffe das wird so geschrieben :) Und deine Kugel kannst du gerne auch von Breakanoid klauen, musst halt integrieren und verschieben.
Grüße.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

3

09.02.2012, 14:20

Okay, habe es jetzt anders herum gemacht und das Breakanoid Spielfeld als Grundfläche genommen. Blocke und Kugeln raus und das Paddle als bewegliches Objekt dass sich auf z und x-Ache bewegt und an den Wänden abprallt.

Wie bekomme ich es jetzt am besten hin, dass das Spielfeld zum unebenen Terrain wird?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

4

09.02.2012, 14:22

FSA hat dir ja schon eine Möglichkeit genannt. Wenn du das Citymodell nicht unterteilen möchtest, kannst du ja mal nach Raycasting suchen. Dabei wird ein Strahl(Ray) von deinem Punkt aus in die zu prüfende Richtung geschossen. Dann wird geguckt, ob der Strahl mit deinem Modell kollidiert. Wenn ja, musst du noch gucken wie weit die Position dieser Kollision von deinem Spieler entfernt ist. Wenn die Entfernung kleiner als der Radius deines Balls ist, dann hast du eine Kollision. Den Strahl kannst du mit Vektoren ganz einfach darstellen. Du könntest nun einfach einen Strahl in Bewegungsrichtung schießen und gucken ob du dich bewegen darfst. Wenn du eine Genauere Kollision möchtest, kannst du natürlich mehrere Strahle mit verschiedenen Winkeln schießen. Ist eigentlich überhaupt nicht schwer. Ich weiß nicht wie weit du dich mit Oberstufenmathe auskennst, aber auf den ersten Seiten im Buch steht ja schon einiges beschrieben. Ansonsten einfach mal Google anwerfen.
edit: War mal wieder zu spät. Naja das was du jetzt willst ist ja etwas völlig anderes. Du könntest natürlich einfach das Spielfeld durch ein Terrain austauschen. Aber was hast du dann genau vor? Überleg dir erst was du genau machen möchtest und frag dann noch mal nach.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

5

09.02.2012, 14:25

Am Ende soll es so funktionieren:

Ich bewege die Kugel über das Terrain und sie "klebt" immer an der Textur, rollt also auch kleinere Hügel hoch und runter.
Zudem soll es 2-3 Objekte auf dem Terrain geben, mit denen diese Kugel kollidieren kann.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

09.02.2012, 14:36

Naja eine Bewegung auf einem Terrain kannst du einfach erhalten. Benutze eine Heightmap für dein Terrain und du hast immer die Höhe an der aktuellen Stelle. So weißt du dann auch wie hoch deine Kugel sein soll. Für die einzelnen Objekte kannst du unter Umständen mit BoundingBox-Kollision arbeiten. Für beides würde es natürlich auch mit Ray-Kollision gehen, wobei das vermutlich schwerer Umzusetzen ist, auf jeden Fall wenn du ein einigermaßen schönes Ergebnis haben möchtest.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

7

09.02.2012, 14:40

Super, danke soweit für deine Tipps.
Gibt es denn eine gute Anleitung zur Implementation einer Heightmap?

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

09.02.2012, 15:04

Solltest du bei Google mehr als genug zu finden;) Ich vermute auch hier im Forum wird es einiges dazu geben. Kann auch sein, dass im Buch dazu was steht. Bin mir nicht mehr sicher was da zu Terrain drin steht;) Einfach suchen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

9

09.02.2012, 15:10

Ja das stimmt, hab bei Google auch was gefunden. Allerdings sind das meistens Anleitungen für Quake oder Half Life. Cool wäre halt etwas, was auf die TriBase Engine zugeschnitten ist...

10

09.02.2012, 15:52

Das Stadtmodell als Ausgangslage fand ich unpraktisch.
Ich habe das Breakanoid-Spiel als Anfang benutzt.
Dort entfernst du erstmal die Wände und kommentierst alles aus.
Dann kommentierst du den Ball wieder ein und änderst den Code so das du ihn nur mit den Pfeiltasten bewegen kannst (solltest du ja schon können :vain: ).
Dann kommentierst du die Steine wieder ein und machst die Kollision. Sollte auch kein Problem sein.
Nun kannst du die Steine mit einem anderen Modell ersetzen, sagen wir...ein Baum? :whistling: Jetzt musst du nur noch die Kollisionsabfrage ein wenig anpassen.
Du kannst diese Modellart dann kopieren und andere Modelle einfügen, falls du brauchst (ja brauchst du :P ).
Jetzt fehlt nur noch dein Terrain. Also erstmal alles wieder auskommentieren.
Für das Terrain habe ich glücklicherweise diesen Code hier gefunden:
Terrain rendern - Bsp.: tbDirect3D
Dort kommt am Ende ein wabbelndes Terrain raus, quasi ein Meer. Wenn du da die Bewegung raus nimmst und eine andere Textur verwendest, hast du eine Landschaft.
Für das Kleben der Objekte auf dem Terrain musst du dann die Höhe des Terrains an einem bestimmten Punkt ermitteln. Dafür machst du dir eine Funktion, die recht trivial ist.
Beim Erstellen der Objekte fragst du dann die Höhe ab und setzt die Gegenstände entsprechend.
Bei der Kugel fragst du die Höhe bei jedem Frame ab und passt sie jeweils an.

Werbeanzeige