Seite 1 von 1
Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 00:24
von Sven1277
Hallöchen,
hat jemand ne Ahnung wie ich herausfinden kann welches Entity die bei x y z befindet ?
Vieleicht ne blöde Frage.... aber ich find einfach nix
Gruß
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 00:35
von gnasen
ich würde einfach alle Entitys beim erstellen in einer Liste speichern. Dann kannst du alle Entitys durchgehen und die X/Y/Z Koordinaten vergleichen.
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 00:40
von Sven1277
Das währe so ja kein Problem. Probiert hab ich es noch nicht, stell mir aber vor das es
bei sehr vielen Entity etwas dauert und es dann etwas ruckelt oder ?
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 00:56
von gnasen
das kommt ganz darauf an, wieviele Elemente du hast und wie oft du die Position feststellen möchtest. Es gibt effizientere Wege statt Listen, zB Bäume, aber diese sind wesentlich schwieriger zu implementieren.
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 01:04
von Sven1277
Sitze gerade an einem Spiel und fummel mich erstmal so durch wie ich was mache. Bin auch soweit gut
voran gekommen. Texturieren, Moddeln und und und.
Also ich habe soetwas die eine Maus (Entity) den ich mit der Maus in x und z bewegen kann.
Nun möchte ich bei einem Klick wissen welches Entity sich unter der "Maus" befindet.
Wüsste leider nicht so genau wie ich das machen soll.
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 02:00
von gnasen
ich gehe mal davon aus, dass du die PB interne 3D Engine nutzt. Dann schau dir mal den Befehl MousePick(#Camera, x, y) genauer an. Der liefert dir das Objekt unter den gegebenen X/Y koordinaten.
Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 02:38
von Sven1277
MousePick ist eigendlich super. Aber leider ist die nur auf x und y beschränkt.
Wenn mir ein Entity genau vor der Kamera liegt würde ich nur dieses Entity
bekommen.
Was nicht zu sehen ist finde ich also nicht.
Gibt mir eigendlich das RayCollide das Entity zurück oder nur ne 1 als "hab was getroffen".
Dann würde ich den Startpunkt von meiner Maus-Entity bis ein par pixel/punkte nach unten.
Und dann gibt mir das RayCollide das darunterliegende Entity aus.

Re: Entity von x y z Koadinaten abfragen.....
Verfasst: 25.02.2012 11:16
von Schobaer
Moin,
habe es bei mir so gemacht (PickZ kann man noch einfügen, brauche ich aber nicht). Soll mal ein Clon von DarkOrbit werden. Ist aber noch weit weg. Habe Probleme mit dem Moddeln. Habe es auch mal mit Sprites getestet. Habe aber keine vernüftige Lösungen gefunden, wie ich den Hotspot so veränder, dass er in der Mitte des Sprites liegt. Jemand eine Idee?
RayCollide testet, ob sich ein Objekt zwischen zwei Punkten befindet. Laser von hier bis zum Mond. Wenn ein Satelit zwischen diesen beiden Punkten den Laser "berührt", dann wird zurück gegeben, dass sich etwas dazwischen befindet.
ST_Main_xxx sind Strukturen. Für den Spieler, den Aliens, den Gegnern etc. jeweils eigene.
Code: Alles auswählen
Procedure Main_SUB_AbfrageMouse()
;Hier wird die aus abgefragt und alles mögliche an Berechnungen erstellt und gespeichert
;Mausbutton etc. abrufen und die Daten auch der GUI zur Verfügung stellen
If ExamineMouse()
InputEvent3D(MouseX(), MouseY(), MouseButton(#PB_MouseButton_Left|#PB_MouseButton_Right), eingabe.s)
EndIf
;Feststellen, welches Entity angeklickt wurde
If MouseButton(#PB_MouseButton_Left)
enti.l=MousePick(#CameraMap,MouseX(),MouseY())
If enti.l <> ST_Main_Spieler()\MapID
If enti.l <> #EntSchiffSpieler
ST_Main_Game()\EntyPick=enti.l
Else
ST_Main_Game()\EntyPick=0
EndIf
Else
ST_Main_Game()\EntyPick=0
EndIf
EndIf
;Die Weltkoordinaten der Maus beim Click abspeichern
If MousePick(#CameraMap,MouseX(),MouseY())
ST_Main_Spieler()\SchiffZielX=PickX()
ST_Main_Spieler()\SchiffZielY=PickY()
EndIf
EndProcedure
Gruß
Schobaer