[B2D] Sichtfeld auf einer Tilemap

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ToeB

Betreff: [B2D] Sichtfeld auf einer Tilemap

BeitragDo, Jan 15, 2009 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe eine Tilemap, wo die mauern und so gespeichert sind, und ein zweites Array, wo ich reinschreibe, welche felder dem spieler "offen" sind (sichtbar) und welche nicht (0=nicht sichtbar, 1=sichtbar). Das ganze mach ich so, das ich jeden winkel ab gehe (also spielerwinkel +-45°) und dann punkt für punkt gehe ich mit Sin/Cos in die richtung, alle felde werden aufgedeckt die unter dem "Strahl" liegen (also see(smx,smy) = 1). Wenn jetzt eine mauer kommt, wird die schleife verlassen und der nächste winkel wird geprüft. Da funtz auch alles sehr schön ! nur das wenn ich reinschreibe "If map(smx,smy) > 0 then Exit" dann flackert der oft an wänden auf (das heißt "see" switscht die ganze zeit zwischen 1 und 0), und wenn ich an einer wand entlang laufe, dann seh ich auf einmal gar nichts mehr, auch wenn ich von der wand weggucke !

Hier mal der Codeteil der für das blickfeld zuständig ist :
Code: [AUSKLAPPEN]
;Um den spieler erstmal alles sichbar machen...
see(px,py)=1
   see(px,py-1)=1
   see(px,py+1)=1
   see(px-1,py)=1
   see(px+1,py)=1
   see(px+1,py+1)=1
   see(px+1,py-1)=1
   see(px-1,py+1)=1
   see(px-1,py-1)=1
   ; jetzt nur noch die Strahlen
   For tmpw = -45 To 45 Step 2
      For i = 1 To 500 Step 15
         sx# = player_x+Cos(player_w+tmpw) * i
         sy# = player_y+Sin(player_w+tmpw) * i
         smx = sx/30.0
         smy = sy/30.0
         If smx => 0 And smx < MapWidth And smy => 0 And smy < MapHeight   
            If map(smx,smy) > 0 Exit            
            See(smx,smy) = 1               
         EndIf
      Next
   Next


Was genau mach ich falsch ? Hängt das mit Float/Int zusammen oder setzt ich das Exit an der Falschen stelle ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

juse4pro

BeitragFr, Jan 16, 2009 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
könnest du nicht einfach sinus und kosinus vor der for, bla to 500 Schleife berechnen, um somit viel rechenzeit zu sparen?
Portfolio |LinkedIn |XING

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group