Login
Aktuelle Version
Aktuelle 3d games creator / Darkbasic Professional Version: 7.2
vom: 04.02.2009

Zum Download bitte hier klicken.
Aktuelle News
letztes Update:
05.02.2009
(siehe Neues)
Hauptmenü
Suche
Internationale Seiten
DarkBASIC Lounge
Werbung
Aktuelle Themen im Forum
Forum Thema Antworten Gelesen Letzter Beitrag
Noch unfertige Projekte (3dgc) Doyle 2 11 120 07.09.2010 17:39 Mc-Over
Community Projekt Zum Spiel selbst 26 3495 28.08.2010 20:47 Mc-Over
Noch unfertige Projekte (3dgc) Lab Rush 15 768 28.08.2010 18:19 Mc-Over
Programmierung (3dgc) endloser Wettbewerb 1219 43498 27.08.2010 11:11 Valle
Community Projekt was ist mit dem community-projekt? 15 176 23.08.2010 19:33 basti123
Sonstiges 2 neue videos zum gucken 2 86 20.08.2010 23:58 codecrusher
Werbung
3d games creator Forenübersicht
   Programmierung (3dgc)
     Bilder-Kollission
Du musst dich erst registrieren bevor du Beiträge veröffentlichen kannst

Diskussion | Neueste zuerst Vorheriges Thema | Nächstes Thema | Unten
Autor Diskussion
KnTig
Veröffentlicht am: 28.01.2010 20:24
Neugeborenes
Registriert seit:: 21.01.2010
Aus::
Beiträge: 6
Bilder-Kollission
ich hab da ne Frage:

gibt es in Dark Basic Professional nen Befehl, mit dem man Bilder miteinander kollidieren lassen kann?
Koelle
Veröffentlicht am: 29.01.2010 09:27
Neugeborenes
Registriert seit:: 29.06.2005
Aus:: Braunschweig
Beiträge: 4
Re: Bilder-Kollission
Jau gibt sogar 2
Ergebnis = sprite collision( Spritenummer, Zielsprite )
Ergbenis = sprite hit( Spritenummer, Zielspritenummer )
Ist aber nur eine Box Kollision, für eine Pixelkollision musste Dein Sprite in einen Memblock umwandel und Pixel für Pixel vergleichen. Hier mal eine Beispielfunction, für Animierte Sprites musste sie halt noch umschreiben.

Function BColli(spr , img , color)
  
  
  rem asume que el sprite esta contenido en una imagen y que sus coordenadas son relativas a la
  rem coordenada 0,0 (top,left) de la imagen de 32 bits
  rem
  rem SPR =sprite to check
  rem IMG =image to check
  rem Color = Transparent Color
  
  Colision=0
  anch = Sprite width(spr)
  alto = Sprite height(spr)
  posx = Sprite x(spr)
  posy = Sprite y(spr)
  
  spriteimage=254
  backimage=255
  
  imagesource = Sprite image (spr)
  
  Make memblock from image spriteimage,imagesource
  Make memblock from image backimage,img
  
  ancho_imagen = Memblock dword (backimage,0)
  alto_image = Memblock dword (backimage,4)
  
  base=12
  
  For x=0 To anch -1
    For y=0 To alto -1
      
      ColorSpr= Memblock dword (spriteimage,12+x*4+y*anch*4)
      ColorImage=Memblock dword (backimage,12+(x+posx)*4+(y+posy)*ancho_imagen*4)
      
      If colorspr<>colr And colorimage<>colr Then colision=1:Exit
      
      If colision=1
        
        y=alto-1
        x=anch-1
        
      Endif
      
    Next y
  Next x
  
  Delete memblock 255
  Delete memblock 254
  
Endfunction Colision 


----------------
Was heute Recht ist, kann morgen zu Unrecht werden. So steht es in der Geschichte.

DarkBasicProer
Veröffentlicht am: 29.01.2010 15:40
DB Philo
Registriert seit:: 06.11.2006
Aus:: Nahe München
Beiträge: 71
Re: Bilder-Kollission
Wenn du eine pixelgenaue Kollision haben möchtest würde ich dir empfehlen das AdvancedSPRITES Plugin herunterzuladen.
Das ist zum einen einfacher handzuhaben, zum anderen hat das Plugin eine bessere Objektverwaltung und ist schneller.
Wenn dir aber eine Boxkollision ausreicht, dann würde ich die, von Koelle genannten, DBP-internen Befehle verwenden, da sie, v.a. wenn du noch nicht soviel Erfahrung hast, einfacher zu benutzen sind.


----------------

Diskussion | Neueste zuerst Vorheriges Thema | Nächstes Thema | Oben

Du musst dich erst registrieren bevor du Beiträge veröffentlichen kannst