Entity von x y z Koadinaten abfragen.....

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Sven1277
Beiträge: 15
Registriert: 25.09.2008 00:30

Entity von x y z Koadinaten abfragen.....

Beitrag 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ß
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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.
pb 4.51
Sven1277
Beiträge: 15
Registriert: 25.09.2008 00:30

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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 ?
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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.
pb 4.51
Sven1277
Beiträge: 15
Registriert: 25.09.2008 00:30

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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.
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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.
pb 4.51
Sven1277
Beiträge: 15
Registriert: 25.09.2008 00:30

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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.
:? :?
Schobaer
Beiträge: 21
Registriert: 25.07.2009 10:41
Wohnort: Berge

Re: Entity von x y z Koadinaten abfragen.....

Beitrag 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
Gruß, Schobaer
Antworten