RPG-Maker Quartier

Hier dreht sich alles um die RPG-Maker-Reihe von ASCII/Enterbrain. Der RPG-Maker ist ein Tool, mit dem du dir dein eigenes kleines Rollenspiel erstellen kannst. Du findest hier alles, was du dazu brauchst. Aber natürlich umfasst die Community noch mehr!
Aktuelle Zeit: Di Mär 03, 2020 2:57

Alle Zeiten sind UTC + 1 Stunde



Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
Offline
Rotfüchschen
Rotfüchschen
Beiträge: 227
BeitragVerfasst: Di Apr 17, 2012 17:05 
Hallo zusammen,

ich bräuchte mal eine Hilfestellung bezüglich Bitmaps/Sprites.
Auf einigen meiner Maps ist es möglich, Events per Maus zu bewegen.
Durch Anklicken eines Events, kennzeichne ich alle begehbaren Felder blau (dafür erstelle ich pro Feld ein Bitmap).
Das funktioniert auch wunderbar, nur sobald ich die Map scrolle, bewegen sich die Felder mit.

Momentan habe ich es so gelöst, dass ein durchsichtiges Window anzeige, auf dem ich die Felder zeichne und sobald sich die Map.display_x/y ändert (sprich die Map gescrollt wird) das Window anpasse. Das funktioniert zwar, aber sieht sehr bescheiden aus (Die Map scrollt langsamer als das Window).

Alternativ - und das sieht auch ok aus - würde es funktionieren, diese Felder einfach als Event anzuzeigen, da diese beim Scrollen auf der Map bleiben.

Ich würde gerne wissen, ob jemand da einen eleganten Lösungsansatz kennt.

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Offline
Official Oldschool
Official Oldschool
Benutzeravatar
Beiträge: 8917
Alter: 31
Wohnort: BRD, Thüringen
BeitragVerfasst: Di Apr 17, 2012 20:27 
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)

_________________


Nach oben
 Profil ICQ  
Mit Zitat antworten  
Offline
Rotfüchschen
Rotfüchschen
Beiträge: 227
BeitragVerfasst: Mi Apr 18, 2012 6:45 
Hey KD,

vielen Dank für deine abermals gute Hilfe. Im Nachhinein tut es mir schon weh, wie dumm ich war. Natürlich hatte ich die Koordinaten auch per $game_map.display_x/y berechnet, aber die Formel nicht gesehen und deshalb falsch gehabt (mit Modulo-Rechnung, wodurch das Bitmap nicht bei jedem Frame verschoben wurde).

Einen noch größeren Dank, dass du dir auch noch die Mühe gemacht hast, mir die elegantere Lösung zu demonstrieren.
Ich würd dich ja glatt Knutschen, aber dann wirst du dir wohl beim nächsten Mal 2x überlegen, ob du mir hilfst xP

Danke!

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de