Single/Multi Surface Bob engine Pixelgenau

Übersicht Sonstiges Projekte

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen

 

Silbersurfer

BeitragDi, Sep 21, 2010 23:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres schrieb
Zitat:
1 FPS/hängt ?!


wie kommt das jetzt zustande ? im fenstermod läuft es und in Fullscreen nicht...
Ich habe ja einen modi gewählt (800x600x32) den wohl jeder fahren können sollte standart halt
es sei denn, das die Grafikkartekeine keine 32 bit umsetzen kann, dann könnte es wohl zu so einen Problem kommen..

stelle doch einfach mal den die Grafikausgabe auf 16 bit und schaue ob es daran liegt

Zitat:
Erwarte nicht zuviel Lobgesang; nur Kritik gibt es gleich


von Lob is ja auch nicht die Rede, Ich wäre dankbar auf überhaupt eine Kritik
das hatte ich mit Feedbeck gemeint Xeres...

gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Xeres

Moderator

BeitragMi, Sep 22, 2010 8:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß nicht, was gestern noch nebenbei lief, jetzt geht's mit 900 FPS im Vollbild...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Silbersurfer

BeitragMi, Sep 22, 2010 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
hi Xeres,

da bin ich dann aber doch froh danke dir das du nochmal gepostet hat...

gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

Betreff: neue Befehle zugefügt (Animation)

BeitragMi, Sep 29, 2010 14:39
Antworten mit Zitat
Benutzer-Profile anzeigen
hi Leute,

so habe jetzt die ersten Animations Befehle zugefügt...
wobei Ich in moment noch keine variablen Animgrößen verbaut habe z.B erstes Bild 16x16 und das zweite dann 32x32 sondern die Textur in gleiche raster gesetzt habe.

wer also eine 128x128 große Textur als Animations Textur einsetzt muß darauf achten das sie durch den ausschnitt teilbar ist z.B kann ich 32x16 nehmen oder 32x32, 16x32 u.s.w

In Moment Bastel ich aber schon an einen Editor das das dann ermöglichen soll Laughing

so hier nun die Befehle

Arrow is_create_anim(surface,b#,h#,time#)
Arrow is_set_anim_bob(id,start,ende,anim)

das wars schon, is nicht viel bringt aber viel... Laughing

Ich würde mich über Ideen und Anregungen sehr freuen..

gruss Silbersurfer

Code: [AUSKLAPPEN]
Graphics3D 640,480,32,2
SetBuffer BackBuffer ()
Include "system\is Bob engine.bb"

;zeigt die verwendung der Befehle is_create_anim(), is_set_anim_bob()

;kamera und Layer erstellen
Kamera=CreateCamera( )
Is_Setup_layer(Kamera)

;mesh und Surface erstellen
mesh=Is_Create_Mesh()
; erstellt die Surface mit textur größe 512x512
surface=Is_create_Surface(mesh,"ABCD.png",1)

;--------Bob 1-------------
;erstellt die Animation in größe 128x128 das ergibt 4 Bilder auf der Textur mit abspielgeschwingkeit von einer 1 Sekunde
Is_Create_Anim(surface,128,128)
;erstellt einen Bob für die Animation
bob=Is_Create_Bob (surface,100,100)
;setzt die anzahl der bilder für die Animation und die abspielrichtung
Is_Set_Anim_Bob(bob,0,3,1)
;bildgriff auf mitte
Is_Automid_Bob (bob)

;-------Bob 2-------------
;erstellt die Animation in größe 128x128 das ergibt 4 Bilder auf der Textur mit abspielgeschwingkeit von einer halben Sekunde
Is_Create_Anim(surface,128,128,.5)
;erstellt einen Bob für die Animation
bob2=Is_Create_Bob (surface,80,80)
;setzt die anzahl der bilder für die Animation und die abspielrichtung
Is_Set_Anim_Bob(bob2,0,1,1)



timer=CreateTimer (60)


Repeat   
   Is_Rotate_Bob (bob,1)
   Is_Draw_Bob(bob2,10,10)
   Is_Draw_Bob(bob,320,240)
   WaitTimer (timer)
   RenderWorld
   
   Flip
Until KeyHit(1)


EDIT: Update ist natürlich schon geuppt
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 29, 2010 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Was ich mich schon zu Beginn fragte. Warum lässt du den Benutzer die Mehses und Surfaces laden und zusammenfügen? Das kann man auch alles in die Bibliothek selbst verwalten, so das der Benutzer einfach nur ein Bild laden braucht, dessen Handle dann benutzt werden kann.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

BeitragMi, Sep 29, 2010 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic hat Folgendes geschrieben:
Warum lässt du den Benutzer die Mehses und Surfaces laden und zusammenfügen?


Ich weiß nicht ob ich das jetzt richtig verstanden habe,
das mit dem selber zusammen fügen habe ich deshalb so gehalten damit man mehr übersicht auf seine erstellten surface behält...

Zitat:
Das kann man auch alles in die Bibliothek selbst verwalten


damit meinst du eine verwaltung in einer Bank oder type nehme ich an, vieleicht hast du recht damit
nur dachte ich das man so leichter seine erstellten Objekte strukturien (aufgelistete sehen kann)

aber Ich lasse mich da immer gern eines bessern belehren...

danke Hectic für deinen denkanstoß
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Sep 29, 2010 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nee, das ist ja schon ne gute Erklärung. Jeder wie er mag. Wink

Vielleicht hättest du dir dazu spezielle Möglichkeiten erdacht.

Ansonsten kannst du mal bei Gelegenheit auf meine Signatur klicken.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

Betreff: so noch ein paar Animations Befehle...

BeitragDo, Sep 30, 2010 15:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hectic schrieb
Zitat:
kannst du mal bei Gelegenheit auf meine Signatur klicken.


joo das hatte Ich schon gemacht hectic und dein Draw3D ist auch übelst gut Smile
da werde ich mir anregungen holen wenn ich das denn darf...

nun zu meinen neuerungen Exclamation
habe nun noch drei Befehle für Anim hinzugefügt

Arrow is_get_anim(id) zur übergabe weches Bild gerade angezeigt wird
Arrow is_set_anim(id,pos) zum übergeben welches Bild angezeigt werden soll
Arrow is_startstop_anim(id) zum an/ausschalten der autmatischen Animation
der war doch sehr wichtig da ich meine Animation automatisiert hatte, was gut ist für Animationen welche immer die selben abläufe haben

aber will man z.B an einen punkt der Animation ein bestimmtes Bild setzen, muß man diese selber steuern können..

dadurch habe ich noch zwei befehle angeglichen

Arrow is_draw_bob(id,x,x,[z],[pos]) das pos ist nun für setzen der Anim bilder gedacht
Arrow is_rect_bob(id,x,y,w,h,[pos]) und hier eben so...

natürlich kann man das denn auch mit is_set_anim(id,pos) machen
und damit sollte erstmal Die Animation abgedeckt sein denke Ich Very Happy

bin wie immer für jeden Bug report oder Kritik offen

das Update ist schon geuppt

gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

Betreff: rechteck Kollision is nun auch vorhanden !

BeitragSo, Okt 03, 2010 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
hi leute,

so habe nun mit der Kollision angefangen Cool

wobei ich in moment nur die einfache rect Kollision eingefügt habe, dazu steht jetzt der erste befehl

Arrow Is_rect_kollision_bob (id)

es werden weitere folgen, dieser befehl fragt nur diesen bob(id) ab ob er Kollidiert mit einen anderen Objekt
wenn ja dann gibt er true zurück...

Was ich gerne noch möchte wäre eine pixelgenaue Kollisions abfrage wobei ich da gerne euren Rat hätte, wie ich dieses am besten realisieren könnte.

Ich wäre sehr Dankbar über tipps und techniken von euch !!

PS. ich uppe das Update erst wenn alle befehle fertig sind....
gruss Silbersurfer
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

Betreff: stecke fest........

BeitragMi, Apr 13, 2011 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo Leute endlich bin ich mal wieder zuhause....
und kann jetzt mal wieder etwas an meiner Engine basteln

und da habe ich auch gleich ein problem wo ich irgendwie den Wald vor lauter Bäumen nicht sehe Embarassed

Arrow es geht um die Kollisionsabfrage

die leider bei rotierenden bobs nicht funtz, und ich da einfach den fehler nicht finden kann
hier meine Kollisons abfrage wobei die Line_intersect funktion nicht von mir ist sondern aus dem Codearchiv

Code: [AUSKLAPPEN]
Function is_rect_kollision_bob(id)
   If id=0 Then Return
   bob.bob=Object.bob(id)
   If bob.bob=Null Return

   ;punkt 0 x,y Kordinaten übergeben
       X#=VertexX (bob\Surface,bob\v[0])
   y#=Abs(VertexY (bob\Surface,bob\v[0]))

   ;punkt 1 x,y Kordinaten übergeben
       X1#=VertexX (bob\Surface,bob\v[1])
   y1#=Abs(VertexY (bob\Surface,bob\v[1]))

   ;punkt 2 x,y Kordinaten übergeben
       X2#=VertexX (bob\Surface,bob\v[2])
   y2#=Abs(VertexY (bob\Surface,bob\v[2]))

   ;punkt 3 x,y Kordinaten übergeben
   X3#=VertexX (bob\Surface,bob\v[3])
   y3#=Abs(VertexY (bob\Surface,bob\v[3]))
   
   ; alle weiteren Bob´s überprüfen ob einen Kollision stattgefunden hat   
   For bob.bob=Each bob
      ;punkt 0 x,y Kordinaten übergeben
      Xx#=VertexX (bob\Surface,bob\v[0])
      yy#=Abs(VertexY (bob\Surface,bob\v[0]))

      ;punkt 1 x,y Kordinaten übergeben   
          Xx1#=VertexX (bob\Surface,bob\v[1])
      yy1#=Abs(VertexY (bob\Surface,bob\v[1]))

      ;punkt 2 x,y Kordinaten übergeben   
          Xx2#=VertexX (bob\Surface,bob\v[2])
      yy2#=Abs(VertexY (bob\Surface,bob\v[2]))

      ;punkt 2 x,y Kordinaten übergeben
      Xx3#=VertexX (bob\Surface,bob\v[3])
      yy3#=Abs(VertexY (bob\Surface,bob\v[3]))

      ;abfragen aller Vertex ob sie sich überschneiden
      ;punkt 0
      If bob\id >< id
         ausgabe=Line_intersect(x#,y#,x1#,y1#, xx#,yy#,xx1#,yy1#)
         If ausgabe >0 Return ausgabe
      EndIf
      If x>xx And x<xx1
         If y>yy And y<yy2
            Return 1
         EndIf
      EndIf
      ;punkt 1
      If bob\id >< id
         ausgabe=Line_intersect(x1#,y1#,x3#,y3#, xx1#,yy1#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
      EndIf    
      If x1>xx And x1<xx3
         If y1>yy And y1<yy3
            Return 1
         EndIf
      EndIf
      ;punkt 2
      If bob\id >< id
         ausgabe=Line_intersect(x2#,y2#,x3#,y3#, xx2#,yy2#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
      EndIf    
      If x2>xx And x2<xx1
         If y2>yy And y2<yy2
            Return 1
         EndIf
      EndIf
      ;punkt 3
      If bob\id >< id
         ;ausgabe=Line_intersect(x#,y#,x2#,y2#, xx#,yy#,xx2#,yy2#)
         ;If ausgabe =1 Return ausgabe
      EndIf    
   Next

End Function   
Function Line_intersect(x1#,y1#,x2#,y2#, x3#,y3#,x4#,y4#)
   ;Steigung ausrechnen
   m1# = (y1#-y2#)/(x1#-x2#)
   m2# = (y3#-y4#)/(x3#-x4#)
   
   ;Y-Achsen Abschnitt ausrechnen
   b1# = y1# - m1#*x1#
   b2# = y3# - m2#*x3#
   
   
   ;Term umformen
   x# = (b2# - b1#) / (m1# - m2#)
   y# = x# * m1# + b1#
   
   ;schauen, ob der Punkt auf einer Linie liegt
   abstand# = Abs (x1#-x2#)
   If Abs (x#-x1#) <= abstand # Then
      If Abs (x#-x2#) <= abstand # Then
            
         abstand# = Abs (y1#-y2#)
         If Abs (y#-y1#) <= abstand # Then
            If Abs (y#-y2#) <= abstand # Then
                 
               abstand# = Abs (x3#-x4#)
               If Abs (x#-x3#) <= abstand # Then
                  If Abs (x#-x4#) <= abstand # Then
                      
                     abstand# = Abs (y3#-y4#)
                     If Abs (y#-y3#) <= abstand # Then
                        If Abs (y#-y4#) <= abstand # Then
                         
                        Return 1
                         
                        EndIf
                     EndIf
                  EndIf
               EndIf
            EndIf
         EndIf
      EndIf
   EndIf
End Function


alles funktioniert gut solage nicht die bobs rotiert werden Evil or Very Mad

was übersehe ich hier kann mir da jemand weiter helfen
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 13, 2011 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Einmal eine Prüfung, ob irgend ein Eckpunkt (egal welcher) sich innerhalb des Quads des anderen Bobs befindet.

Einmal eine Prüfung, ob irgend eine Kante des einen Bobs irgend eine Kante des anderen Bobs durchkreuzt (alle gegeneinander).

- - -

Inside Quad-Code: [AUSKLAPPEN]
Graphics 512,512,0,2
SetBuffer BackBuffer()

x0=128+32:y0=128-32
x1=384+32:y1=128+32
x2=384-32:y2=384+32
x3=128-32:y3=384-32




While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 If KeyHit(2) x0=mx:y0=my
 If KeyHit(3) x1=mx:y1=my
 If KeyHit(4) x2=mx:y2=my
 If KeyHit(5) x3=mx:y3=my

 Color 64,64,64
 If InsideQuad(mx,my,x0,y0,x1,y1,x2,y2,x3,y3) Rect 0,0,512,512,1
 Color 255,255,255

 Line x0,y0,x1,y1
 Line x1,y1,x2,y2
 Line x2,y2,x3,y3
 Line x3,y3,x0,y0

Text 20,20,MouseX()

 Flip
 Cls
Wend
End




Function InsideQuad(px,py,x0,y0,x1,y1,x2,y2,x3,y3)
 If (x1-x0)*(py-y1)-(px-x1)*(y1-y0)>0
  If (x2-x1)*(py-y2)-(px-x2)*(y2-y1)>0
   If (x3-x2)*(py-y3)-(px-x3)*(y3-y2)>0
    If (x0-x3)*(py-y0)-(px-x0)*(y0-y3)>0
     Return True
    End If
   End If
  End If
 End If
End Function

Kann leider den Urheber von nicht finden.

Das andere ist eine normale LineIntersect -Prüfung.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

BeitragMi, Apr 13, 2011 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
danke hectic für die schnelle antwort

aber was mir aufgefallen ist wenn ich deine funktion teste das sobald ich die punkte spiegel (x<x1) dann funktioniert sie auch nicht mehr, genau das passiert ja auch bei meiner Rotation.

Ich glaube echt bald das mein Horizont hier nicht mehr ausreicht man man

dickes Brett vor dem Kopf ich habe Shocked

die funktion Line_intersect macht ja eigendlich daselbe

ich werde versuchen in ruhe mal deine funktion zu zerlegen, um mir ein bild davon zu machen was genau in einzeln du da abfragst danke nochmal
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 14, 2011 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast doch die volle Kontrolle wie deine Bobs gezeichnet werden. Oder willst du auch negativ gespiegelte Bobs in deiner Abfrage sicherstellen?

Zu beachten gilt, dass eine Grafikengine (auch mit Kollisionsabfrage) vor allem schnell sein muss. Wenn Leute nun versuchen die ''krankesten'' Dinge mit zu machen und hoffen dass alles noch ''richtig'' funktioniert, dann ist es eine Sache. Oder man setzt die Beschränkung in der Hilfe fest, dass bei Kollisionsabfragen nur positiv skalierte (von 0 bis x) Bobs erkannt werden.

Ist zumindest meine Meinung. Andererseits kann man auch jedes Triangle auf die Zeichnerichtung anbfragen. Oder man setzt einen zusätzlichen Flag im Management der eine ''1'' trägt, sobald eine Skalier-Funktion ein Bob negativ skaliert hat.

Das hilft jedoch alles nichts, wenn deine Bobs auch in der X- oder Y-Achse gedreht werden können. Dann muss JEDES FRAME eine Abfrage her, in welche Richtung ein Triangle gezeichnet wird, was langsam sein wird.

Edit1: Warum nennst du deine Dinger eigentlich Bobs?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

BladeRunner

Moderator

BeitragDo, Apr 14, 2011 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke mal er meint Blitter Objects, eine Bezeichnung aus Amiga-Zeiten (Der Blitter war ein Graphicchip im Amiga, der sich um schnelles Füllen und Hardwarsprites kümmerte afair).
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
 

Silbersurfer

BeitragSa, Apr 16, 2011 23:47
Antworten mit Zitat
Benutzer-Profile anzeigen
jo genau dewegen BladeRunner der alten Amiga zeiten wegen Smile

danke hectic sowas hatte ich mir schon gedacht *hmmm ,aber wenn ich ich sie nicht bei der Rotation auf kollision abfragen kann ist die Engine gewaltig eingeschränkt und danke für die gute erklärung...

Ich werde auf jeden fall noch mal einen Weg suchen das es funtz
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Apr 17, 2011 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du denn deine Bobs in X,Y und Z -Richtung drehen?

Oder drehst du die Bilder nur auf der 2D-Ebene (Z-Achse)?
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

BeitragSo, Apr 17, 2011 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
die möglichkeit besteht, ist aber nur dann interessant wenn es um effekte geht.
es soll sich ja hierbei mehr um eine 2D engine handeln, als ersatz von drawblock und Co.

halt wegen der transparents,dem Speed und des schnellen Rotierens u.s.w

also in erster liene nur um X/Y achse....

Edit soorry natürlich auf der z Achse

Warum ? hast du vieleicht ne Ideeee Very Happy
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 18, 2011 19:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mit deiner Funktion nicht mehr weiter kommst, dann lasse dir alle Linien durch 2D-Befehle ausgeben. Dann erkennst du vielleicht, dass eventuell die eine oder andere Linien nicht richtig gezeichnet bzw. abgefragt wird.

Ansonsten, ich hab es ja auch geschafft. Kannst mal einen Blick unter _Draw3D2.bb\Draw3D2 #13, ImagesOverlap3D.bb werfen. Da wird eine Kollisionsabfrage gemacht.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Silbersurfer

BeitragMi, Apr 20, 2011 10:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich arbeite zur zeit mit ein testproggy daran, und danke das ich mir anregungen aus deiner lib holen darf Smile
das es möglich ist und auch ohne großen speedverlust sieht man an SpriteCandy.

dort hat er auch eine art pixelgenaue Kollision abfrage eingebaut anhand von shapes.....
wenn Ich also das problem gelöst habe sollte ich auch in der lage sein eine ähnliche Kollisionsabfrage zu erstellen
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip
 

Silbersurfer

BeitragMi, Apr 20, 2011 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
endlich Kollision steht Smile zwar in moment noch ohne shapes aber dafür stabil bei is_rect_kollision_bob(id)
danke hectic für deine Tipps die haben mir sehr geholfen.
die insidequad funktion hat mich dann zum erfolg geführt schade nur das ich nicht weiß wer diese geschrieben hat, denn mein Dank wäre ihm sicher Smile


hier noch mal mein code dazu.....

Code: [AUSKLAPPEN]
Function is_rect_kollision_bob(id)
   Local x#,y#,x1#,y1#,x2#,y2#,x3#,y3#,xx#,yy#,xx1#,yy1#,xx2#,yy2#,xx3#,yy3#
   If id=0 Then Return
   bob.bob=Object.bob(id)
   Id=bob\id
   If bob.bob=Null Return
   ;punkt 0 x,y Kordinaten übergeben
    X#=VertexX (bob\Surface,bob\v[0])
   y#=Abs(VertexY (bob\Surface,bob\v[0]))
   ;punkt 1 x,y Kordinaten übergeben
    X1#=VertexX (bob\Surface,bob\v[1])
   y1#=Abs(VertexY (bob\Surface,bob\v[1]))
   ;punkt 2 x,y Kordinaten übergeben
    X3#=VertexX (bob\Surface,bob\v[2])
   y3#=Abs(VertexY (bob\Surface,bob\v[2]))
   ;punkt 3 x,y Kordinaten übergeben
   X2#=VertexX (bob\Surface,bob\v[3])
   y2#=Abs(VertexY (bob\Surface,bob\v[3]))

   
   ; alle weiteren Bob´s überprüfen ob einen Kollision stattgefunden hat   
   For bob.bob=Each bob
      If bob\id>< id
         ;punkt 0 x,y Kordinaten übergeben
         Xx#=VertexX (bob\Surface,bob\v[0])
         yy#=Abs(VertexY (bob\Surface,bob\v[0]))
         ;punkt 1 x,y Kordinaten übergeben   
          Xx1#=VertexX (bob\Surface,bob\v[1])
         yy1#=Abs(VertexY (bob\Surface,bob\v[1]))
         ;punkt 2 x,y Kordinaten übergeben   
          Xx3#=VertexX (bob\Surface,bob\v[2])
         yy3#=Abs(VertexY (bob\Surface,bob\v[2]))
         ;punkt 2 x,y Kordinaten übergeben
         Xx2#=VertexX (bob\Surface,bob\v[3])
         yy2#=Abs(VertexY (bob\Surface,bob\v[3]))
      EndIf    
      ;abfragen aller Vertex ob sie sich überschneiden
      ;punkt 0
      If bob\id >< id
         ausgabe=Insidebob(x#,y#,xx#,yy#,xx1#,yy1#,xx2#,yy2#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
         ausgabe=Insidebob(xx#,yy#,x#,y#,x1#,y1#,x2#,y2#,x3#,y3#)
         If ausgabe =1 Return ausgabe      
      EndIf
      ;punkt 1
      If bob\id >< id
         ausgabe=Insidebob(x1#,y1#,xx#,yy#,xx1#,yy1#,xx2#,yy2#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
         ausgabe=Insidebob(xx1#,yy1#,x#,y#,x1#,y1#,x2#,y2#,x3#,y3#)
         If ausgabe =1 Return ausgabe         
      EndIf    
      ;punkt 2
      If bob\id >< id
         ausgabe=Insidebob(x2#,y2#,xx#,yy#,xx1#,yy1#,xx2#,yy2#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
         ausgabe=Insidebob(xx2#,yy2#,x#,y#,x1#,y1#,x2#,y2#,x3#,y3#)
         If ausgabe =1 Return ausgabe         
      EndIf    
      ;punkt 3
      If bob\id >< id
         ausgabe=Insidebob(x3#,y3#,xx#,yy#,xx1#,yy1#,xx2#,yy2#,xx3#,yy3#)
         If ausgabe =1 Return ausgabe
         ausgabe=Insidebob(xx3#,yy3#,x#,y#,x1#,y1#,x2#,y2#,x3#,y3#)
         If ausgabe =1 Return ausgabe         
      EndIf    
   Next

End Function   
-------------------------------------------------------
XP 2000+ 512DDR Radeon 9800 XL 340GB HD
Hompage : http://home.arcor.de/silbersurfer01/
Is Bob engine http://home.arcor.de/silbersur.../Isbob.zip

Gehe zu Seite Zurück  1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group