Frage zu Kollision

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Azran

Betreff: Frage zu Kollision

BeitragMo, Nov 30, 2009 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo an alle

na ja so wie der Titel sagt habe ich fragen oder eher probleme seit einigen Tagen mit der Kollision. Jch habe schon in der Oh mir das dazu das durchgelesen, jedoch irgendwie nicht richtig hinbekommen.
Also ich habe hier jetz zwei Blöcke und na ja und ich möchte nun wissen wenn er ne kollision festellt durch
BlitzBasic: [AUSKLAPPEN]
If RectsOverlap(x,y,h,z,x1,y1,h1,z1) Then 

ob man dann irgendwie schreiben kann das er dann nicht mehr
BlitzBasic: [AUSKLAPPEN]
	If KeyDown(17) Then
y=y-40
EndIf

das y=y-40 rechnet.
Na ja ich hoffe ma auf hilfe falls ich noch mehr wissen müsst dann schreibt einfach ne antwort. Ich bedanke mich schon ma falls jemand ne lösung hat

Mfg Azran

Goodjee

BeitragMo, Nov 30, 2009 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

If KeyDown(17) and not RectsOverlap(x,y,h,z,x1,y1,h1,z1) Then
  y=y-40
EndIf



wenn man drückt und keine kollision stattfindet wird sich bewegt
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

blackgecko

BeitragMo, Nov 30, 2009 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
If KeyDown(17) And (Not RectsOverlap(x,y,h,z,x1,y1,h1,z1)) Then
y=y-40
EndIf


So müsste es gehen Wink

EDIT: Oha, zu spät Mad
EDIT2: Fehler beseitigt Embarassed
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.
  • Zuletzt bearbeitet von blackgecko am Mo, Nov 30, 2009 18:46, insgesamt 2-mal bearbeitet

Nicdel

BeitragMo, Nov 30, 2009 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
If KeyDown(17) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
y=y-40
EndIf

Meinst du das? Falls ja, Tutorials durchlesen Wink

Edit: Gedankenstehler Very Happy
Bei euch kommt allerdings ein "Excepting Expression"-Error Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
  • Zuletzt bearbeitet von Nicdel am Mo, Nov 30, 2009 18:44, insgesamt einmal bearbeitet

Nicdel

BeitragMo, Nov 30, 2009 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, Doppelpost...
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Azran

BeitragMo, Nov 30, 2009 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
hm also ich habe es ma so gemacht wie es mir gesagt wurde, na ja ich hoff ma das ich das so richtig gemacht hatte aber wenn ihr das ma eingebt werdet ihr vllt schnell feststellen das da nicht viel passiert ausser das die blöcke wieter durch sich durchlaufen
hier ma alles:
BlitzBasic: [AUSKLAPPEN]
;---------------Header----------------------
AppTitle "Blockkollision"
Graphics 1280,1024,32,2
SetBuffer BackBuffer()
timer=CreateTimer(60)
;-----------------Global----------------------
Global x=100
Global y=100
Global z=50
Global h=50

Global x1=200
Global y1=200
Global z1=50
Global h1=50

;---------------Schleifenanfang-------------

Repeat


;---------------Blöcke-----------------------
Rect x,y,z,h,0
Rect x1,y1,z1,h1,0


;--------------Block1-----------------------


If KeyDown(200) Then
y=y-40
EndIf

If KeyDown(203) Then
x=x-40
EndIf

If KeyDown(205) Then
x=x+40
EndIf


If KeyDown(208) Then
y=y+40
EndIf

;---------Block1 Abgrenzung----------

If y<=0 Then
y=y+40
EndIf

If x<=0 Then
x=x+40

EndIf

If x>=1230 Then
x=x-40
EndIf

If y>=974 Then
y=y-40
EndIf
;--------------------------kollision--------------------
If KeyDown(200) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
y=y-40
EndIf

If KeyDown(203) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
x=x-40
EndIf

If KeyDown(205) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
x=x+40
EndIf

If KeyDown(208) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
y=y+40
EndIf


If KeyDown(17) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
y1=y1-40
EndIf

If KeyDown(30) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
x1=x1-40
EndIf

If KeyDown(32) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
x1=x1+40
EndIf

If KeyDown(31) = 1 And RectsOverlap(x,y,h,z,x1,y1,h1,z1) = 0
y1=y1+40
EndIf

;-------------Block2------------------
If KeyDown(17) Then
y1=y1-40
EndIf

If KeyDown(30) Then
x1=x1-40
EndIf

If KeyDown(32) Then
x1=x1+40
EndIf


If KeyDown(31) Then
y1=y1+40
EndIf
;-----------Block2 Abgrenzung--------------------

If y1<=0 Then
y1=y1+40
EndIf

If x1<=0 Then
x1=x1+40

EndIf

If x1>=1230 Then
x1=x1-40
EndIf

If y1>=974 Then
y1=y1-40
EndIf
;--------------Schleifenende--------------------
Flip 0
Cls
WaitTimer timer
Until KeyHit(1)
;----------------programm end--------------------


vllt sind es ja auch nur fehler an anderer stelle wenn ja klärt mich ma auf Wink

Nicdel

BeitragMo, Nov 30, 2009 19:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst die KeyDown-Abfragen doppelt. Lösch einfach die zwei Teile hier raus, sie sind überflüssig:
BlitzBasic: [AUSKLAPPEN]
;--------------Block1-----------------------


If KeyDown(200) Then
y=y-40
EndIf

If KeyDown(203) Then
x=x-40
EndIf

If KeyDown(205) Then
x=x+40
EndIf


If KeyDown(208) Then
y=y+40
EndIf


BlitzBasic: [AUSKLAPPEN]
If KeyDown(17) Then
y1=y1-40
EndIf

If KeyDown(30) Then
x1=x1-40
EndIf

If KeyDown(32) Then
x1=x1+40
EndIf


If KeyDown(31) Then
y1=y1+40
EndIf
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Azran

BeitragMo, Nov 30, 2009 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
mhm ja oke dann kommt er zu einer kollision
jedoch is dann das problem, das er bis zur mitte fährt und dann sich garnichts mehr bewegen tut.
so ich würde ja halt gerne das er den block wie ein hinderniss sieht was man nicht durchfahren kann aber das sobald man es berührt halt wie eine mauer wirkt die aussenstriche. sodas man drumherum fahren muss jedoch sollte halt der block oder eher beide noch bewegbar sein^^.

Mfg Azran
 

Lion

BeitragMo, Nov 30, 2009 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
speicher die letzte position und überprüf dann mit der aktuellen position, ob eine kollision stattfindet, falls ja dann wird die aktuelle zurück auf die letzte gesetzt
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

BeitragMo, Nov 30, 2009 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
hey leute danke ich habe im endeffekt dank eurer hilfe selbst noch hinbekommen

danke
Azran

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group