Seite 3 von 4

Verfasst: 02.09.2006 14:37
von #NULL
ich hatte auch mal (zuerst) versucht das einfach über geometrie zu berechnen, das wurde aber komplizierter als es auf den ersten blick aussieht - oder ich hab den kniff einfach nich gerafft. jedenfalls wollte ich keine glatze bekommen und mach das jetz immer so...wenn ich mal irgendwann speed brauch ist das mit dem array schonmal ein guter versuch wert.
:allright:
..aber wenn man zum beispiel mehere ebenen verwendet - z.b. wenn ein baum-tile über einem boden-tile gezeichnet wird ect. - dann hat man mit den koll.-funtionen halt noch detailiertere 'selektions-möglichkeiten' (auch wenn man für jedes tiles ein koll.-array erstellen könnte)

Verfasst: 02.09.2006 14:50
von Kaeru Gaman
dann hättest du aber wohl ein problem, wenn in nem wald sich bäume überschneiden.

ganz allgemein ist mir unwohl bei verwendung von PixelCollision, weil es sehr viel zeit frisst.
ich bin der meinung, man sollte so optimiert wie möglich programmieren, damit das game nicht in die knie geht,
wenn man wirklich zeitaufwendiges hinzufügt wie z.b. komplexe KI-routinen.

Verfasst: 03.09.2006 13:07
von Thomas
Tschuldige,
ich blick gar nicht mehr durch.
Ich würde mich freuen, wenn jemand, der sowas schon programmiert hat, mir einen komletten Code (am besten den von dem "isodemo") schicken könnte. :D

Verfasst: 03.09.2006 13:12
von Kaeru Gaman
ich denke, auch oder gerade bei nem kompletten code würdest du auch nicht durchblicken.

fang doch ne nummer kleiner an, und mach erstmal ne senkrechte matrix für die map.
also klassische kacheln, wie im RPG-maker.

wenn du das vernünftig hingekommst, biste nen schritt weiter.

ISO-Map ist kein anfängerthema, das ist schwieriger als billig-3D.

Verfasst: 03.09.2006 13:22
von Thomas
Kaeru Gaman hat geschrieben:ich denke, auch oder gerade bei nem kompletten code würdest du auch nicht durchblicken.

fang doch ne nummer kleiner an, und mach erstmal ne senkrechte matrix für die map.
also klassische kacheln, wie im RPG-maker.
????????????????????

Verfasst: 03.09.2006 21:10
von Zaphod
Ich hab mal den sourcecode meines leveleditors hochgeladen, aber ich habe keinen Bock groß support zu liefern, also guckt in den quellcode wenn es euch interessiert, aber erwartet keine langen erklärungen.

hier ist die URL http://home.snafu.de/~alizta/src_base_editor.zip
brauch PB4.0, wenn ihr es für 3.x, 2.x, 1.x, für den Mac, Linux, Amiga, C64, ... haben wollt, müßt ihr selbst rann.

Ist ganz schön gefrikelt, typisches Beispiel für Programmieren ohne nach zu denken, funktioniert aber ganz brauchbar und sollte alle nötigen techniken demonstrieren.

Verfasst: 04.09.2006 09:35
von Thomas
Ok, danke

werds mir mal ansehen. :D

Verfasst: 14.10.2007 18:06
von C4rizz
Mal ne Frage zu dem Code

Code: Alles auswählen

InitSprite() 
InitKeyboard() 
OpenScreen(1024,768,32,"fllscrn") 

CreateSprite(0,64,64) 
  StartDrawing( SpriteOutput(0) ) 
    Circle(32,32,16,$ff0000) 
  StopDrawing() 
CreateSprite(1,64,64) 
  StartDrawing( SpriteOutput(1) ) 
    Box(2,2,60,60,$aa3333) 
  StopDrawing() 
CreateSprite(2,64,64) 
  StartDrawing( SpriteOutput(2) ) 
    Box(2,2,60,60,$aa6666) 
  StopDrawing() 
w=40-1 
Dim map.l(w,w) 
For i=0 To w 
  For k=0 To w 
    map(i,k)=Random(1)+1 
  Next 
Next 

Repeat 
  ExamineKeyboard() 
  StartDrawing( ScreenOutput() ) 
    ;DrawText(100,100, Str(MouseDeltaX())+", "+Str(MouseDeltaY()) ) 
    ;Circle(MouseX(),MouseY(),5,$770000) 
  StopDrawing() 
  
  If KeyboardPushed(#PB_Key_Right) 
    offX-64 
  EndIf 
  If KeyboardPushed(#PB_Key_Left) 
    offX+64 
  EndIf 
  If KeyboardPushed(#PB_Key_Up) 
    offY+64 
  EndIf 
  If KeyboardPushed(#PB_Key_Down) 
    offY-64 
  EndIf 
  
  For i=0 To w 
    For k=0 To w 
      DisplaySprite( map(i,k), offX+i*64, offY+k*64) 
    Next 
  Next 
  DisplayTransparentSprite(0, 64*7,64*6) 


  FlipBuffers() 
  ClearScreen(0) 
  Delay(30) 
Until KeyboardReleased(#PB_Key_Escape)
Wie kann ich da jetzt eine Kollisionsabfrage starten, zwischen dem Kreis und der einen Farbe von Blöcken?
Sprich ich will die hellen Blöcke als passierbar setzen und die Dunklen als nicht passierbar?
Kann mir bitte wer sagen wie ich das hinbekomme?

Verfasst: 14.10.2007 19:56
von #NULL
der code ist nicht unbedingt geeignet dafür.
da wär' es besser bei tastendruck die spielfigur zu bewegen, aber nicht
in pixeln (wie es hier für die map geschieht), sondern in array feldern.
vor dem bewegen prüfst du dann, ob das neue array-feld z.b. die nummer
hat, auf dessen sprite man laufen darf.
das scrolling musst du dann genau andersherum umsetzten als wie in diesem beispiel. nämlich ausgehend vom player.

Verfasst: 14.10.2007 20:06
von C4rizz
Mhm ok danke dann werd ich ma gucken wie ich das am besten umsetzen kann.