Hindernisse?
Übersicht

![]() |
SuratBetreff: Hindernisse? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
ich wollte eigentlich ein Hinderniss für ein 2D-Spiel programmieren, doch irgendwie weiß ich nicht, wie ich das anstellen solle. Also, ein dicker Stein soll die Spielfigur am weitergehen hindern. BlitzBasic: [AUSKLAPPEN]
Und dann? Vielleicht so? Code: [AUSKLAPPEN] Then X<s Y<t EndIf Kann mir irgendjemand dabei helfen? Ich bin für jede Hilfe dankbar! ![]() |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
![]() |
matte |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Wenn der Spieler mit dem Stein zusammenkracht, musst du den Spieler wieder auf die Position vor der Kollision setzen. z.B. Code: [AUSKLAPPEN] ...then
x=x-xdiff y=y-ydiff endif je nachdem, wo der Spieler her kam... |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
So könnte man das lösen:BlitzBasic: [AUSKLAPPEN] ; Pseudo:Einfach in jedem Durchlauf die alten Positionen zwischenspeichern und bei Kollision zurücksetzen ![]() Edit: Nächstes Mal bin ich schneller, versprochen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, vielen Dank, aber das mit dem oldx und oldy funktioniert irgendwie
nicht. Außer ich schreibe am Anfang: oldx=x-1 oder mache ich da was falsch? |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, hab was vergessen. Du musst natürlich vor dem verändern der Koordinaten zwischenspeichern, dann bewegen und schliesslich Kolli prüfen. So sollte es dann keine Probs geben ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenns nur ein 2d spiel ist und es nur um steine geht würde es ja auch ein rectoverlap tun bzw wenn es ein top down spiel ist einfach nur X koordinate. | ||
![]() |
Ornos |
![]() Antworten mit Zitat ![]() |
---|---|---|
kenn mich bei 2d nicht aus aber gibt es da nicht auch so was wie kollisonsabfragen?
edit: klar gibs das, habe das nur von matte gelesen |
||
- Zuletzt bearbeitet von Ornos am Mi, Apr 06, 2005 11:55, insgesamt einmal bearbeitet
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deviniere erstmal dein Spiel, weil darauf, man die Antwort, welche Kollision sich lohnt, aufbauen kann. | ||
between angels and insects |
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, das Spiel ist so ähnlich wie Zelda(auf GB,GBC und GBA).
Der Stein ist ein Hinderniss und deswegen darf die Spielfigur nicht durch ihn durchrennen. Das gilt für x als auch für y. Ich weiß nur nicht genau wie ich das machen soll bzw. den X-oder Y-Wert vorher zwischenzuspeichern. ![]() |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ziehe dir mal den Mapeditor, von TS bei www.Mapeditor.de.vu
Da ist ein RPG Sample drinne, auf das du aufbauen kannst. (Eigenwerbung) |
||
between angels and insects |
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn es wie Zelda ist, also SNES zelda, dann ist es doch 2D topdown, also brauchst du ja an y nicht wirklich überprüfen, weil alle Hindernisse sozusagen y= 1 haben und der rest eben y=0. Demnach langt ein einfaches rectaloverlap mit einem rectal mit einer höhe von 1 | ||
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du meinst Rectsoverlap,oder?
Da eignet sich ImagesCollide doch eigentlich besser, da der Stein ja nicht viereckig ist. |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach, ja. Wie kann ich koordinaten zwischenspeichern? | ||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hm....imagesoverlap ist allerdings sehr viel langsamer als rectsoverlap. oder du schreibst einfach selber was schnelles wenn du die "werte" von stein und spieler kennst.
also machst eben erst ein rectsoverlap und, wenn die rects overlappen, erst dann eine imagecollide überprüfung. wenn er ansonsten für jedes steinbild ne exakte abfrage macht...da kommt selbst ein 2D spiel mal ins ruckeln auf nem langsamen rechner. Koordinaten zwischenspeichern indem du sie in einer variable ablegst. also wie er es eigentlich schon gesagt hatte: bevor die tastaturabfrage machst schreibst du: oldx=x oldy=y dann x=x+step dann y=y+step dann die kollisionsüberprüfung if kollision dann x=oldx y=oldy ![]() gerade noch eingefallen.....hast du 8 bewegungsrichtungen oder 4 ? wenn du nur 4 hast kannst du einfach mit nem line command die abfrage machen. also eine linie von 1 oder 5 oder wie gross auch immer dein step sein mag vom player in die 4 bewegungsrichtungen zeichnen und sehen ob dort irgendwas in der entfernung y grösser als 1 hat. ist wohl das allerschnellste |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lass Dich nicht verwirren, Deiner Frage nach bist Du noch fleissig am lernen und da über selbstgebastelte Kollisionsroutinen nachzudenken wird Dich nicht sehr motivieren ![]() oldx=xEin ImagesCollide mehr wirst Du nicht merken und es motiviert wenn man erstmal was auf die Beine getsellt hat ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja....ich dachte halt wenn er ein zeldastil spiel macht dann hat er seine informationen über die steine in ner map drinnen stehen. dann macht er bei der mapinformation eben anstatt dim (x,y) dim (x,y,z)
wobei bei top down ansicht z eben die "höhe" angibt. da könnte er dann einfach immer x+/- und y+/- geschwindigkeit des laufens machen und in der map prüfen ob bei den dazugehörigen werden ein z steht. |
||
![]() |
matte |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn das wirklich ein Spiel ähnlich Zelda werden soll, dann hast du doch immer Hintergrund so eine Art Tile-Engine laufen. Die Map ist also in viele kleine Rechtecke, oder Hexagons aufgeteilt. Erklär die Hindernisfelder zum verbotenen Feld. Überprüfe bei jedem Schritt, ob der nächste Zug in ein verbotenes Feld führt. Ist dem so, dann setz die Figur nicht.
Ohne Tile Engine würde ich um die Hindernisse Kreise setzten und Kollsion auf Abstand prüfen. BlitzBasic: [AUSKLAPPEN] If (spielerx-steinx)^2+(spielery-steiny)^2<Abstand^2 Then Jetzt ist es egal aus welcher Richtung du gegen das Objekt gelaufen bist. Das ist also eine simple, selbstprogrammierte Koll-.routine grüße matte |
||
hitokiri |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke matte, das ist genau das, was ich eigentlich sagen wollte jedoch nicht auszudrücken vermochte ![]() |
||
![]() |
Surat |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank,
eigentlich hatte ich einen Hintergrund,der nicht aus Tiles bestand, doch irgendwie ist das alles mit Tiles einfacher. |
||
"DER GRÖßTE FEIND IST IN DEN EIGENEN REIHEN" (Trygonia-Xen's Quest)
AZUON-Beyond the dark life (2%) SOULS OF DESTINY (23%) |
feiderehemals "Decelion" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Deshalb nimmt man ja tiles ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group