[B2D] Sichtfeld auf einer Tilemap
Übersicht

![]() |
ToeBBetreff: [B2D] Sichtfeld auf einer Tilemap |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group