PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sichtfeld-Skript



mhm
03.07.2009, 21:14
Heyho,
kann mir jemand ein gutes Sichtfeld-Skript empfehlen? Es muss an sich nur sagen können ob Punkt A von Punkt B aus sichtbar ist. Mit meinen rudimentären Rubby-Künsten ein Kampf das selber zu bauen.
mhm

Shining Advances
04.07.2009, 00:09
meinst du ein fertiges script für die normale map oder willst du das für was ganz anderes verwenden und brauchst deshalb nur einen algorithmus?

falls es für die normale map ist, gibt es einige dinge die noch wichtig sind:
was versperrt denn die sicht? alle tiles die nicht passierbar sind? oder tiles mit einer speziellen terrain id? versperren events auch die sicht?

ich hab mal eine sichlinie für nen 2d shooter geschrieben:

class Game_Map
def sichtlinie(start,ziel)
n = Math.sqrt((start[0]-ziel[0])**2+(start[1]-ziel[1])**2).to_i
x = start[0]
y = start[1]
for i in 0...n
d = n-i
x = ((x * (d - 1) + ziel[0]) / d.to_f).round
y = ((y * (d - 1) + ziel[1]) / d.to_f).round
return false unless $game_map.passable?(x,y,0)
end
return true
end
end
aber ich weiß nicht ob ich dir dieses script wirklich "empfehlen" kann.
es funzt zwar weitgehenst, aber es gibt bestimmt bessere lösungsmöglichkeiten.
aufruf: $game_map.sichtlinie([x,y],[x2,y2])
gibt true oder false zurück

in dieser version wird die sicht nur durch unpassierbare tiles verpserrt.
falls das für dich nicht passt, passable? durch terrain_tag oder $game_map durch $player oder nen event ersetzen :/

mhm
04.07.2009, 10:50
Jo, danke!
Für meine Zwecke ist das Skript absolut ausreichend.
Ich nehme an, das Math.sqrt die Wurzel zieht, oder? Dann wäre n wohl die Distanz, damit kann ich die Sichtweite ja simpel selber begrenzen.
Ansonsten ists das was ich gesucht habe, danke ^^