das schwarze kastl ist die figur. wenn du jetzt einen schritt nach rechts machst, überprüfst du dann auf dem blauen punkt, ob das feld frei ist?
ja ich weiß, ich tast mich stückerlweiß ran, damit ich versteh, wie du das machst *g*
wenn die koordinaten deiner figur dem linkeren oberen rand des sprites deiner figur entsprechen, kann es nie funktionieren. ich frage, weil ich
sicher gehen will, das du die position abfrägst, wo die figur hingeht... also figur+breite+10 oder so ...
Registriert: Di Nov 29, 2005 21:11 Beiträge: 88 Wohnort: Bonn
genau so sollte es aussehen
müsste in dem code auszug auf seite 2 auch zu sehen sein
if collide.Canvas.Pixels[mainchar.x+40+2,mainchar.y+8] = clWhite then walking := true;
es ist ja nicht so, dass es gar nicht funktioniert...
nur wenn man vor der wand steht, ein stück zurück rennt und wieder drauf zu rennt man in die wand rein
1: if collide.Canvas.Pixels[mainchar.x+8,mainchar.y+64+2] = clWhite then walking := true; 2: if collide.Canvas.Pixels[mainchar.x+40+2,mainchar.y+8] = clWhite then walking := true; 3: if collide.Canvas.Pixels[mainchar.x+8,mainchar.y+16-2] = clWhite then walking := true;
die koordinaten stimmen? zB bei 3... runter... y+16 ... die figur ist ja wesentlich größer als 16 ...
aber das wird so oder so nicht funktionieren, wenn du zB auch tiles hast, die runde eingänge usw bieten...
so wie ich das seh, fragst du die falschen koordinaten ab... und es wird nicht reichen, wenn du nur einen
pixel pro geh-richtung abfragst...
ich hätte die tile-karte als kollisionskarte benutzt. die richtigen koordinaten kriegst du durch ne einfache division
der figurXY durch die breite/höhe der tilekarte. nur kannst halt damit kein free-form-tile-terrain mehr machen, mit
teilweise begehbaren tiles.
dass ein pixel pro gehrichtung zu wenig ist versteh ich, aber das erklärt in meinen augen nicht das verhalten, was meine kollisionsroutina an den tag legt (lange entfernungen->okay, kurz kehrtmachen und wiederkommen->murks)
nehmen wir an du hast 10 tiles, numeriert von 1-10 und baust so eine karte in einem text-file auf (test.txt? *g*)
0000100000
0000000200
0030000010
usw
du stehst jetzt auf 0/0 ... bewegst dich nach rechts und deine koordinaten erweitern sich ... auf 1/0 ...
das sind aber nicht die koordinaten auf der karte, sondern auf dem bildschirm. um die koordinaten auf der
karte zu erhalten mußt lediglich dividieren. ein tile ist zB 10 pixel breit, die karte ist 10 tiles breit, ergibt
eine maximallänge von 100 pixel. figur.x / 10 = karte.x ... das selbe für y. dann weißt du, auf welchem feld
auf der karte deine figur steht. auf die weise kannst deine abfrage machen. klar? ... aber bitte nicht in
fließkommawerten ;) und die figur sollte nicht breiter als ein tile sein ...
so würde ich es machen... ich hoffe, das ich irgendwie helfen konnte. wirklich. ich komm nicht auf dein problem,
bin müde und glaub ich hab frase vergrault, obwohl ich das gar nicht wollte. er hat es ja gut gemeint.
du hast es verstanden. das ist dank genug, bei meinen erläuterungen lol
ja, das heißt, man hat nur tiles die begehbar/nicht begehbar sind. aber darüber kannst du dir ja DANN
immer noch gedanken machen, wenn es mal so weit funktioniert, das du überhaupt fehlerfrei gehen kannst ^^
ich hab morgen viel vor, aber ich werd sicher auch hier sein :)
Registriert: Di Nov 29, 2005 21:11 Beiträge: 88 Wohnort: Bonn
Akira hat geschrieben:
du hast es verstanden. das ist dank genug, bei meinen erläuterungen lol
nkay, wie ich auf das aktuell besetzte tile komme, hätte ich schon herausgefunden
nur ist die aufsplittung der tiles in begehbar/nicht begehbar für mich keine möglichkeit, das ist mir zuviel gefrickel
ich hab mich eher gefragt, warum zum henker meine kollisionsroutine so komisch arbeitet, jetzt mal abgesehen davon, dass es ne mist-routine ist (das seh ich ja ein, aber ich bin auf keinen anderen ansatz gekommen)
die idee mit dem bool array find ich gut... das muss ich mal weiter ausarbeiten, weil die spielfigur breiter ist als ein halbes tile, sich manche wege je zur hälfte auf zwei tiles erstrecken...
hab heute abend orchester, könnte sein, dass es hier später wird
falls überahaupt jemand reinschaut
Registriert: Di Nov 29, 2005 21:11 Beiträge: 88 Wohnort: Bonn
da bin ich wieder *hehe*
ich möchte den 3x3 array in angriff nehmen
aber wenns irgendwie geht möchte ich die erstellung des arrays automatisieren
wär ja ganz schön viel arbeit, die ganzen kombinationen einzeln aufzuschreiben
bei nem 2x2 array sinds 15 glaub ich, das ginge ja noch, aber bei 3x3... naja, die formel hab ich schon wieder vergessen...
Edit:
achja, das pascallsche dreieick... Es sind über 500 Kombinationen - nee, das ist auch zu viel aufwand
Ich bleib bei der Faulheit - vielleicht sollte ich mir die häufigsten raussuchen...
Mitglieder in diesem Forum: Bing [Bot] und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.