zu dem bild ausschnitt ist zu sagen:
Alle deine obkete die sichtbar sein köönten(also grafische), haben eine Position(nehmen wir mal x/y dafür).
Diese positionen werden relativ zur kamera gezeichnet. DAs heißt das die Position des Objektes(Weltkoordinaten) subtrahiert werden, mit der position der Kamera. So erhälst du die ViewKoordinaten.
wenn du also folgendes machst(vor jedem zeichnen):
Delphi-Quellcode:
PosToDraw.X := Object.X - Kamera.X;
PosToDraw.Y := Object.Y - Kamera.Y; //<--Bei Delphi muss hier ADDIERT werden, da Y von oben nach unten verläuft. Beispiel gilt für Y wen es von unten nach oben geht.
Damit erhälst du die richtigen koordinaten. Wenn deine map scrollen soll, "bewegst" du einfach die kamera. Das ist alles. Vor dem zeichnen dann nurnoch checken ob das objekt innerhalb des Views ist und das wars.
Aus obigem vllt eine funktion machen wie TranslateWorldToViewPos
PS: außerdem am besten NICHT mit einzelnen
VCL komponenten für jedes Spielobjekt hantieren. Das einzig grafische ist eine Paintbox, und darauf werden alle bitmaps gezeichnet
MFG
Memnarch