Seite 2 von 3

Verfasst: 16.08.2007 16:03
von Zaphod
PB nennt Images im Screen zwar Sprites, diese sind aber keine Sprites im klassischen Sinne... will heißen, wenn du deine Map zeichnest, zeichnest du nur images auf eine Surface, du kreierst keinen komplexen Objektverbund klassischer Sprites mit Logik. Das bedeutet, dass du Kollisionen nicht zwangsläufig mit den Selben "Sprites" durchführen musst, du kannst beliebige Sprites nutzen, die nur die selbe Form haben.

Deine Spielfeldtiles sind ja einfach nur Rechtecke gleicher Größe... du kannst also eine Kollision deines Spielersprites auch mit jedem beliebigen "Tileförmigen" Sprite durchführen, dass die selben Dimensionen hat wie dein Tile.

Also was PB kollision macht ist "ich habe hier was, das ist geformt wie mein Bildchen 23, das befindet sich an position 123,344 und ich habe hier mein Bildchen 59 an der Position 224,333. Sag mir doch liebes PB, wenn die beiden Teile so geformt wären wie der Bildinhalt und sie sich an diesen Positionen befinden, würden sich die sichtbaren Teile des Bildes überlappen?"
Darauf bekommst du eine simple ja/nein Antwort.

Ja, der weiche Übergang von Tile zu Tile wäre schon viel einfacher, aber pixelfrei hätte ich lieber.
Kurze Frage: Würde sich dafür die Bounding Box Kollision eignen? Da hatte Kaeru auch extra ein paar Routinen dafür gepostet...
Für Pixelfrei oder für weichen-übergang? Für Pixelfrei eignet sich auch Bounding Box.
Für den weichen-übergang brauchst du sogar garkeine kollisionen berechnen, da reicht ein Blick ins Maparray und eine Anfrage wo sich welches den Weg blockierende Objekt befindet.

Verfasst: 16.08.2007 16:19
von Kaeru Gaman
kleiner nachtrag

Bild

im grunde musst du nur für diese 8 punkte checken, ob sie sich über einer begehbaren tile befinden.

also, keine kollision und nix, nur ein blick ins maparray,
bloß eben für 8 punkte, die deine figur begrenzen.

wenn die checkpoints L1 und L2 über einem begehbaren tile sind, kann er nochn pixel nach links.
für die anderen seiten das gleiche.

Verfasst: 16.08.2007 16:36
von Rubiko
Danke für die anschaulichen Erklährungen :allright:
Werd's mir jetzt erstmal alles ein paar mal durchlesen und dann probier ich ob was draus wird

Verfasst: 16.08.2007 17:16
von Zaphod
Kaeru hat da übrigens recht... man kann das zwar mit den eingebauten Kollisionsfunktionen von PB machen, ich würde es aber auch ohne umsetzen, es sei denn, ich habe auf der Tilemap Kollisionen mit nichtquadratischen Objekten und selbst dann würde ich eher darauf verzichten wollen.

Verfasst: 16.08.2007 17:57
von ZeHa
Korrekterweise solltest Du als BoundingBox aber auch nur die jeweiligen Fußpartien benutzen... und nicht bis zum Kopf. Ist schwer zu erklären, aber stell Dir mal vor, die Figur wäre dreimal so hoch... dann wird klar, daß Du nicht von Kopf bis Fuß das Ding als BoundingBox definieren darfst, denn wenn einer "zwei Meter" hinter der Figur steht, würde er rein "grafisch" mit seinen Füßen bereits mit dem Kopf kollidieren, was aber nicht "logisch" als Kollision gelten sollte.

Kaerus Bild ist also so gesehen nicht ganz richtig. Es sei denn, Deine Ansicht ist KOMPLETT von oben. Dann kannst Du aber nie unterschiedlich hohe Figuren oder Objekte verwenden. Wenn Du hingegen eine Zelda-ähnliche Ansicht hast, dann sind auch Höhenunterschiede machbar, aber wie gesagt, die BoundingBox darf dann nicht die gesamte Spritehöhe einnehmen.

Im Übrigen: Gehe nicht nach der Grafik. Gehe nur nach den reinen Positionen. Deine Welt besteht nicht aus Sprites, sondern aus Koordinaten, Punkten, Orten, usw. aber nimm die Sprites nicht als Grundlage. Alles muß auch ohne Sprites funktionieren. Die Sprites sind dann nur der "Skin" sozusagen, und können ihre eigenen Größenordnungen haben usw. Das, was zählt und was zur Berechnung genommen werden soll, sind REINE Koordinaten. Ich denke das Beispiel mit der "BoundingBox nur im Fußbereich" verdeutlicht das.

Verfasst: 16.08.2007 18:37
von Kaeru Gaman
da hst du durchaus recht, ZeHa,
aber bei oldskool-RPGs mit solchen grafix ist es mehr ober weniger üblich,
dass die figuren nicht mit dem kopf auf wände hinausreichen... ;)

Verfasst: 16.08.2007 21:28
von ZeHa
Jepp, schon klar :)

Aber mir geht's auch drum, daß man als Anfänger eben oft den Fehler macht, und sich zu stark an der Grafik orientiert. Da kann es auchmal vorkommen, daß jemand bei einem scrollenden Spiel jedes Background-Tile in seiner Position verschiebt, weil es ja scrollen soll ;)

Daher merke: Das Weltmodell muß in sich stimmig sein, und die Grafik sitzt "obenauf" und orientiert sich an den Gegebenheiten :)

Verfasst: 17.08.2007 01:05
von Rubiko
Ihr meint jetzt nicht nur ganz genau von den Füßen aus, oder? Ich habs jetzt nicht ausprobiert, glaube aber es könnte etwas unreal wirken..
also zumindest wohl noch etwas nach oben

Verfasst: 17.08.2007 01:32
von Kaeru Gaman
ja klar..

in meinem schaubild oben die oberen vier punkte so auf ein drittel runter,
auf höhe der hände in dem fall.

Verfasst: 17.08.2007 09:58
von ZeHa
Genau. Also am besten quadratisch :)

(Wenn Du Zelda spielst, wirst Du ja ebenfalls merken, daß wenn Du komplett an ein Hindernis ranläufst, daß der Kopf noch ein bißchen "überlappt". Unser PB-Spiel "Gloomy Nights" ist übrigens ein schlechtes Beispiel dafür, denn hier überlappen sich die Figuren nie mit den Bäumen. Naja, das kommt dann in Teil II irgendwann :mrgreen: )