X und Y Breiche Eingrenzen ? (kollision)
Übersicht

![]() |
FreemanBetreff: X und Y Breiche Eingrenzen ? (kollision) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
ich mache grad meine kollision für meine Tilemap , bisher klappt alles sehr gut, nur an kanten bsp: #### #### # # # # kann mein Charakter aus mir nicht bekanntem Grund zwischen den Tiles laufen. ich habe das ganze Kollisionssystem so gemacht , das geprüft ob wenn man nach oben läuft und dann gibt es ein bestimtes Tile wo der Char nicht gegenlaufen kann. Das gleiche hab ich noch für links & rechts gemacht mit einem Tile siehe Bild : Bild1 so, jetzt gibt es aber das problem das mein char irgendwie zwischen den Tiles läuft.... (also sprich per kombination der Richtungstasten) wenn er richtig steht . Bild2 jetzt dachte ich mir grenzte den X/Y Breich einfach ein wo er sich nach links bzw. nach rechts bewegen kann und wo nicht. Allerdings hab ich keinen Plan wie man X/Y Breiche angibt bsp: von y = 45 bis 56 und x= 34 kann der char sich nicht nach links bzw rechts bewegen . Achso, das ganze soll in einer If abfrage rein .... edit : ich weis die Bildqualli is mies, und die Dächer sehn nich soo schlimm aus, lalso bitte keine Kommentare zu dem Pic, sie sollten ja nur als Beispiel dienen Danke |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
Buddha |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mit dem eingrenzen würde ich das nicht machen ist jawohl auch ne drecksarbeit, mach doch so :
wenn tilenr < 1 dann move = 0 wenn tilenr > 1 dann move = 1 wenn move = 1 und taste rechts gedrückt dann x = x + 1 nur en beispiel |
||
Bei fragen im GFX bereich jeder zeit an mich ![]() |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich will ja nicht alles mit X/Y Abgrenzen, nur ein paar stellen, von daher lass die arbeit mal meine sorge sein ![]() ps: ich mach die Kollision so Code: [AUSKLAPPEN] ;bsp für links If KeyDown(200) And Y >= 0.01 And map(x/16,(y+16)/16) <>899 And map(x/16,(y+16)/16) <>897 wobei Y / X die Koordinaten des Helden sind und das mit dem Y >= 0.01 ist ne abgrenzung für die Map |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
sorry wegen doppelpost aber es ist sehr wichtig für mich, also
*Push* |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
offtopic: @freeman: könnte ich vll dein Tileset bekommen (währe seeehr nett) oder kannste mir Tipps geben woher ich sowas inner art noch bekomme?
THX |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
rambo256 hat Folgendes geschrieben: offtopic: @freeman: könnte ich vll dein Tileset bekommen (währe seeehr nett) oder kannste mir Tipps geben woher ich sowas inner art noch bekomme?
THX tut mir leid, weil die sind zu 99% selbstgemalt, und mein grafiker würds nich so gut finden wenn ich die verschenken würde, I'm so sorry , aber vielleicht findet sich ja jemand der dir sowas machen kann. Ich bin selbst heilfroh das ich jemanden wie Dark ryu(grafiker) hab. 8) die tiles sind auch nur 16*16...also nich so gut. außerdem habn er und ich zu viel Zeit investiert als das wir die einfach vergeben würden, deshalb geht es nicht. Tut mir echt leid, und soll auch nicht bös gemeint sein @Topic : problem is gelöst, war zu einfach , bin soo gegen den Wind das ich auf sowas nich draufgekommen bin.... |
||
MacBook | MacOSX 10.5 | 80GB HDD | 1GB | BlitzMax 1.28 |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok,dann kann ich das verstehen.
Würd ich auch nicht gerne Tun wenn man das selber,bzw. der Grafiker,dass zu 99% selbst gemacht hat. Dann werde ich wohl doch das entweder alleine hinpixeln oder mal googlen,hab ich zwar schon gemacht,aber wer weiß..... THX für deine schnelle Antwort |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also: erstmal auf einzelne Richtungstasten überprüfen:
Code: [AUSKLAPPEN] moveY=keydown(208)-keydown(201) ;liefert 1 für runter, -1 für hoch
moveX=keydown(205)-keydown(203) ;dito, rechts1, links -1 Jetzt weisst du, auf welchem Feld dein Player zum stehen kommen würde: Code: [AUSKLAPPEN] -1,-1 | 0,-1 | 1,-1 -1, 0 | Player | 1, 0 -1, 1 | 0, 1 | 1, 1 Du kannst also mit: Code: [AUSKLAPPEN] if map(playerX+moveX,playerY+moveY)= tilenummer der Verbotenen tiles ;Pseudo-code,mach hier eine Schleife in der alle unpassierbaren Tiles abgefragt werden
formschön prufen ob das tile passierbar ist und wenn nein Die bewegung blockieren. Du könntest (mit etwas grüblerei) auch bei blockiertem Weg auf die Einzelnen Bewegungsanteile prüfen und somit deinen Player an Wänden "entlangrutschen" lassen. Hope it works for U. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Garfield |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich würde das ganze mit ImageCollide machen.
Falls du nicht eh schon mit Types arbeitest, würde ich den Tiles, die nicht durchkreuzt werden können, als Types kreieren (z.B. Type Block, Field x, Field y ein Field (Field \Sperre )mit z.B. dem Index 1 geben in der Hauptschleife des Programms nach einer Bewegung alle Types abfragen: Code: [AUSKLAPPEN] For bl.Block = Each Block If ImagesCollide(Figur,X,Y,0,bl\Block,bl\x,bl\y,0) if \Sperre = 1 then -> Bewegung rückgängig (abhängig von deiner Bewegungsart) End If Next Mit dem Index Sperre kannst du dann auch noch andere Bewegungsabläufe abfragen, z.B. wenn der Spieler gegen eine Gummiwand (Index 2, Bewegung rückwärts um 4 Felder) läuft, dass er dann zurückgeschleudert wird nur so als Beispiel |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group