Größe und Position der Spielergrafik in RPG

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag 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
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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.
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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 :)
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag 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
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag 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: )
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Antworten