# Platzieren von Objekten auf TileMap



## leibimatZe (1. Jun 2009)

Hi,

hab angefangen mit Quaxli Tutorial bzgl TileMaps. Hab die Grundstruktur ähnlich jetzt aber auch schon einiges angepasst auf ein RPG.
Nun will ich gezielt an einer bestimmten Position ein Objekt Platzieren, das also nur gezeichnet wird wenn ich an die Position der Map komme.

Aber mir wird es IMMER an der X/Y-Position des Frames angezeigt, nicht an der wahren position der map. Wie kann ich das ändern ? 
Vlt ist es nur was minimales aber ich finds grad irgendwie net, hab grad das tut auch nochmal durch geschaut aber keine Ahnung.
Beim zeichnen des Objekts rufe ich folgendes auf:

```
if(this.intersects(display)){
			double dx = this.x - display.getX(); 
			double dy = this.y - display.getY();
			g.fillRect((int)dx, (int)dy, 6, 6);
		}
```
Das ist in der Zeichenfunktion des Objekts..

bitte um hilfe..
grüße


edit:
display ist das rectangle2d objekt, welches den momentanen bildausschnitt darstellt.
Mir ist auch klar dass irgendwas falsch sein muss  weil das Objekt (100,100) ja IMMER im display liegt. wonach muss ich dennda dann abfragen :/


----------



## ice-breaker (1. Jun 2009)

Du musst um den Player herum den Check machen, also sagen wir zb jeweils 10 Tiles nach oben/unten und 5 Tiles nach links/rechts.


----------



## leibimatZe (1. Jun 2009)

Dann muss ich ja bei jedem Thread Durchlauf alle Objekte durchgehen ob die auf einem der Tiles liegen? Ist das nicht ein relativ hoher Performanceverlust?


----------



## ice-breaker (1. Jun 2009)

Wenn du deine Datenstruktur intelligent aufbaust (2 dimensionales Array) kannst du ganz einfach nur über den zu darstellenden Bereich iterieren


----------



## baroque (3. Jun 2009)

Wäre es nicht einfacher allen Objekten die sich nicht mitbewegen sollen einen Gegenvektor *= -1 zur Mapbewegegung zu verpassen und sie eben nur im Falle eines Intersects mit dem sichtbaren Bereich darstellen zu lassen? Dadurch bleiben sie "wahrgenommen" immer an derselben Position anstatt mitzuwandern (ihre x/y Posi in Bezug auf die absolute, zugrunde liegende Tilemap bleibt so konstant)..


----------



## leibimatZe (3. Jun 2009)

Hey danke für den Tip, hab ca 20 Minuten bevor ich das gelesen hab genau so angefangen das umzu setzen, jetzt passts soweit, nur wird das Objekt beim initialisieren an der stelle im frame ( nicht auf der gedachten stelle auf der map) platziert uuund wenn ich am rand angekommen bin und die map sich nichtmehr beweggt, fängt das objekt an zu laufen xD entgegen der richtung der wand 

Muss das noch versuchen zu fixen, sollte denke ich machbar sein!

Danke nochmal, grüße


----------



## leibimatZe (4. Jun 2009)

So läufts jetzt alles, die NPCs haben ihren festen Platz und wenn ich jetzt in die Nähe komme und ner Taste drücke startet die interaktion.
Hab alle Teilnehmer in  nem Vector und bei Tastenklick durch lauf ich den und schau wo n intersect ist.
Die Objekte sind grafiklos 6x6 pixel groß GEZEICHNET aber das objekt selbst ist 10x10 also kann man auch in der nähe stehen


----------

