Rectsoverlap probleme
Übersicht

AzranBetreff: Rectsoverlap probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey leute
also mein problem is vollgendes eher is es neu frage. ich wollte mich mal an was proggen. so wie es der zufall so will habe ich zunächst das mit blöcken gemacht und so so da kam ich dann auf 40 blöcke. Die natührlich nicht alle quadratisch sind. so dann habe ich zu jedem block ein Rectsoverlap geschrieben und theoretisch müsste es gehn nur es klappt nicht so ganz. Der bewegende block hält bei "unsichtbaren" wände an und da wo die wände sind fährt er durch. dann habe ich ma getestet was währ wenn alles quatdratisch währ. so da geht es komischer weise nur das wenn ich alles aus quadraten machen müsste um die ka 200 machen bräuchte und da ich das nicht will möchte ich euch fragen ob es vllt nen bessere befehl gibt als rectoverlap was auch für sache geht die zb 20x200 lang sind ich bedanke mich schon ma im vorraus Azran |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rects = Rechtecke
Zeig uns mal deinen Code oder prüf nochmal nach ob du alles richtig geschrieben hast. |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Azran,
wenn Blöcke mit Blöcken kollidieren, ist RectsOverlap ![]() Da der Fehler garantiert im Code liegt, wäre es keine schlechte Idee, wenn du diesen auch zeigst. Im BBP gibt es nämlich meines Wissens nach keinen Wahrsager. ![]() mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Azran |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
joa stimmt.
oke das sind jetz nur 4 von den 40 damit es kleiner geht warscheinlich is das rectsoverlap falsch angewendet aber wenn man daraus quadrate machen würde geht es deswegen versteh ich es net BlitzBasic: [AUSKLAPPEN] ;---------------Header---------------------- |
||
![]() |
Tennisball |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist hardgecodet.
Ich würde empfehlen vllt zwei neue Variablen LastXMove und LastYMove einzuführen und damit viel Code zu sparen. Z.B. beim Runterbewegen wird LastYMove auf 10 gesetzt, beim hochbewegen auf -10 Genau so mit LastXMove nur mit links und rechts. Bei einer Kollision bewegst du den Spieler einfach -(LastXMove) auf der X-Achse und -(LastYMove) auf der Y-Achse. (Also wieder zurück, was er gerade gelaufen ist) Dennoch wäre der Fehler bei deinem Code folgender: Code: [AUSKLAPPEN] If KeyDown(200) Then
y=y-10 EndIf ;<- dieses EndIf... If RectsOverlap(x,y,h,b,x1,y1,h1,b1) Then y=y+10 EndIf ;(...alle anderen RectsOverlap-Abfragen...) ;...muss nach hier Ansonsten fragst du 4 Mal ab, ob du kollidierst. Also wirst du auch im Fall der Kollision in alle Richtungen 10 Pixel bewegt. Also nach oben und nach unten, nach links und nach rechts -> Keine Veränderung. Und was ich außerdem empfehlen würde: Types für Wände. Dann musst du nicht jede einzelne Wand abfragen. Schau dir mal ein Type-Tutorial an. Z.B. hier. mfg, Tennisball Edit: Übrigens hast du da Hoehe und Breite vertauscht, wenn b Breite sein soll und h Hoehe |
||
- Zuletzt bearbeitet von Tennisball am Do, Dez 10, 2009 18:36, insgesamt einmal bearbeitet
Lion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
also ich hab mir jetzt nur das erste rectsoverlap angeguckt, aber du weißt, dass rectsoverlap so funktioniert...?
Rectsoverlap(X1,Y1,Breite von X1,Höhe Von Y1,X2,Y2,Breite Von X2,Höhe von Y2)... das was du da hast ist was anderes, da zumindest X in verbindung mit X1 steht, wobei X1 0 ist, sprich es hat garkeine breite und kann damit nicht kollidieren. Wie bei den anderen aussieht weiß ich nich... |
||
Intel Core 2 Quad 4x2.66 ghz - 4gb ddr2 - nvidia GeForce GTX660 2gb
Intel Atom 1x1.83 ghz - 2gb ddr2 - intel GMA 3150 256mb AMD A10-5750M 4x2.5 ghz - 8 gb ddr4 - AMD R9 M290x |
Azran |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zomfg ich habe den fehler!
es lag nicht an dem endif ![]() dadurch das ich b und h nen unterschiedlichen werte hatte und inbei rectsoverlap b und h vertauscht hatte in der reihenfolge hat der somit die kollision genau um 90 grad gedreht gehabt xD aber danke für die hilfe mfg Azran |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group