Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mapsystem (https://www.delphipraxis.net/92094-mapsystem.html)

Sidorion 16. Mai 2007 11:04

Re: Mapsystem
 
So wie ich Deine Zeichnung interpretiere, dann soll das Spiel Tile-basiert sein (also eine gekachelte Karte). Dann ist Kollision mui einfach. In der Karte wird gespeichert, welche Felder begehbar sind und bei der Bewegung prüfst Du einfach das Zielfeld auf Begehbarkeit. Wenns nicht gekachelt sein soll, dann empfehle ich einen BSP-Tree (binary separated space oder so) wies genau heisst, weiss ich jetzt nicht.
In diesem Baum werden sämtliche Wände eingetragen und man kann für jede Koordinate dann abfragen, ob sie innerhalb oder ausserhalb von Festkörpern ist. Die Abfrage geht auch mui schnell, aber der Baum muss erst 'kompiliert' werden, dadurch eignet er sich nur für statische Räume. Andere bewegte Objekte musst Du dann getrennt auswerten.

QuickAndDirty 16. Mai 2007 11:41

Re: Mapsystem
 
Ich würde dafür sorgen das jedes Objekt sich selbst serialisieren kann .

mimi 16. Mai 2007 21:35

Re: Mapsystem
 
das speichern ist eigentlich immer nur Zeit aufwendig.
Für mein Paint2 Programm habe ich einfach 2 speicher Formate entwickelt, dann kann der User einfach über die

Datei Endung entscheiden welches Format er haben möchte.

zum Kollision Problem:
damit habe ich auch immer wieder gerne meine Probleme.

zuerst mal die frage 3D oder 2D ?
dann müsste man noch wissen wie die Objekte aufgebaut sind, also z.b. so wie ich das verstehe besteht der Player aus unterschiedliche Komponenten Körper, Füße, Kopf oder ist es nur eine einfache 2D Grafik ?
wenn ja dann ist das recht einfach bzw. sind es lauter Vierecke ?

Wenn ja, könntest du z.b. in einer schleife alle Objekte durch gehen und prüfen ob sie innerhalb der angeben Positionen liegen z.b. so:

Delphi-Quellcode:
for i:=0 to objCount do begin
  if PTinrect(rect(x,y,x+w,y+h),point(x,y);
end;
das dann als Funktion.

Das ist die Grobe Erkennung. Möchtest du aber eine Feine haben ist das ganze schon aufwendiger.
Dann musst mit Transparent arbeiten. Ich hatte mal dazu ein Beispiel was mit DelphiX lief..... das kam vom DF glaube ich.....

und ich finde XML ist keine Geschmacksache ist es einfach nur viel zu viel zu Pasen.
mehr nicht.
für ein Spiel ist es einfach ungeeignet meiner Meinung nach, was macht der Paser denn wenn ich ein Level habe mit über 10.000 Objekten drin ?
und alle sollen geladen werden ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz