Du müsstest dir nur mal anschauen, wie das bei Events gelöst ist. Folgende Methode liefert dir für gegebene absolute X/Y-Koordinaten (x=0 y=0 ist oberster linker Pixel der Map) die passenden relativen Screenkoordinaten (x=0, y=0 ist oberster linker Pixel des Bildschirms):
Code:
def screen_coords x, y
[x - $game_map.display_x / 4, y - $game_map.display_y / 4]
end
Du musst einfach jeden Frame die Koordinate deines Sprites anpassen.
Zitat:
Durch Anklicken eines Events, kennzeichne ich alle begehbaren Felder blau (dafür erstelle ich pro Feld ein Bitmap).
Dafür gibt es noch eine effizientere Lösung. Die Tilemap Klasse besitzt ein Attribut flash_data, welchem du eine Tabelle mit Flash Informationen für die Mapfelder zuweisen kannst.
Code:
class Game_Map
attr_accessor :flash_data
alias setup_without_flash_data setup
def setup *args
setup_without_flash_data *args
@flash_data = Table.new(width, height)
end
end
class Spriteset_Map
alias update_without_flash_data update
def update
@tilemap.flash_data = $game_map.flash_data
update_without_flash_data
end
end
Das in den Scripteditor einfügen. Danach kannst du mit
Code:
$game_map.flash_data[x, y] = 0x00f
Das Feld mit den Koordinaten x/y blau färben. (0xrgb ist hier eine Farbangabe. r steht für rot, g für grün, b für blau. Alle drei können Werte von 0 bis F annehmen)