Blackout...Abprallen
Übersicht

![]() |
Jo0okerBetreff: Blackout...Abprallen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo leute,
ich habe gerade ein komplettes Blackout, wie kann ich nochmal mit hilfe eier kollision zwei sich bewegende objekte mit ein ander abprallen lassen? P.S.: die hilfe hat mir nicht sehr geholfen. lg Jo0oker |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
FBI-blitz |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit dieser Funktion: http://blitzbase.de/befehle2d/imagescollide.htm
(oder anderen Kollisionsbefehlen). Du prüfst, ob sie kollidieren und wenn ja, dann änderst du einfach die Richtung der beiden Objekte. |
||
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+ Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+ |
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aber damit pralllen die och noch lange nicht von ein ander ab.
Um genauer zu werden, es sind zwei Autos |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
![]() |
darth |
![]() Antworten mit Zitat ![]() |
---|---|---|
einprallwinkel = abprallwinkel
mit der imagecollision testest du nur WANN du abprallen sollst. angenommen es geht darum dass ein ball in einem bestimmten winkel auf eine gerade wand trifft (also z.b die obere kante des bildschirms) kehrst du einfach die y geschwindigkeit. ist die wand NICHT gerade sondern hat einen eigenen winkel, dann musst du den vektor mit der wand schneiden, den winkel bestimmen und den ausschleuder vektor berechnen - welcher dann die neue geschwindigkeit wird. |
||
Diese Signatur ist leer. |
![]() |
Jo0oker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke,
gibt es irgendwo ein Sample, wo ich die erechnung der Koordinaten mir mal anschauen kann? |
||
Tehadon, das kostenlose 3D RPG
www.tehadon.de http://www.blitzforum.de/worklogs/14/ Das Abenteuer wird beginnen! |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das giebt es ist sogar von ihr aber über die suche nicht einfachzu finden ^^ also ihr der code ^^
Ist nicht von mir geht aber super Code: [AUSKLAPPEN] Graphics 800,600,32,2 SetBuffer(BackBuffer()) Global int_x#,int_y# Global mx1# = 400 Global my1# = 300 Type colli Field x1#,y1# Field x2#,y2# End Type createLine(0,300,300,450) createLine(300,450,600,400) createLine(600,400,800,300) timer = CreateTimer(25) While Not KeyHit(1) WaitTimer(timer) Cls mx2# = MouseX() my2# = MouseY() Color(255,255,255) Line(mx1,my1,mx2,my2) For l.colli = Each colli Color(255,255,255) Line(l\x1,l\y1,l\x2,l\y2) ;-- If LinesCross(l\x1#,l\y1#, l\x2#,l\y2#, 400,300, MouseX(),MouseY()) ;delta Kollisionslinie errechnen dx# = l\x1 - l\x2 dy# = l\y1 - l\y2 ;die Magnitude(Vektorlänge) mag# = Sqr(dx^2 + dy^2) ;Vektor Normale (aufrecht auf der Colli-linie) nx# = dy / mag ny# = -dx / mag ; zeichnen der Normale Color(20,255,20) Line(int_x,int_y,int_x+nx*30,int_y+ny*30) ;-- ;nun das ganze für den eintritts-vektor mdx# = int_x - mx1 mdy# = int_y - my1 mmag# = Sqr(mdx^2 + mdy^2) mnx# = mdx / mmag mny# = mdy / mmag ;-- ;das Punktprodukt von eintritts-vektor und Liniennormale vdotN# = mdx * nx + mdy * ny ; hier wird die Reflektion errechnet NFx# = -2.0 * Nx# * VdotN# NFy# = -2.0 * Ny# * VdotN# Vx# = mdx# + NFx# Vy# = mdy# + NFy# ;neuen Vektor zeichnen Color(20,20,255) Line(int_x,int_y,int_x+vx,int_y+vy) ;hier nochmal den Kollisionspunkt zeichnen Color(255,20,20) Line(l\x1,l\y1,l\x2,l\y2) Oval(int_x-2,int_y-2,5,5) End If Next Flip() Wend End Function createLine(x1#,y1#,x2#,y2) l.colli = New colli l\x1 = x1 l\y1 = y1 l\x2 = x2 l\y2 = y2 End Function Function LinesCross(x0#,y0#, x1#,y1#, x2#,y2#, x3#,y3# ) n# = (y0#-y2#)*(x3#-x2#) - (x0#-x2#)*(y3#-y2#) d# = (x1#-x0#)*(y3#-y2#) - (y1#-y0#)*(x3#-x2#) If Abs(d#) < 0.0001 Return False Else Sn# = (y0#-y2#)*(x1#-x0#) - (x0#-x2#)*(y1#-y0#) AB# = n# / d# If AB#>0.0 And AB#<1.0 CD# = Sn# / d# If CD#>0.0 And CD#<1.0 int_X# = x0# + AB#*(x1#-x0#) int_Y# = y0# + AB#*(y1#-y0#) Return True End If End If EndIf Return False End Function |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group