Nahestes Objekt suchen (3D)
Übersicht

NerleBetreff: Nahestes Objekt suchen (3D) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde gerne erreichen, dass ein Objekt das sich ihm naheste bzw. räumlich nächste andere Objekt sucht, und sich nach diesem ausrichtet.
Der Befehl ENTITYPICK arbeitet dabei aber leider ja nur "auf Sicht" wie es scheint, d.h. das Ausrichtungsobjekt muss das Zielobjekt bereits sehen. Ich möchte aber, dass es sich bereits vorher zu ihm ausrichtet. Gibt es einen Befehl oder eine Methode, wie ich ein Objekt auf das jeweils im am nahesten ausrichten kann (oder zumindest einmal feststellen kann), OHNE dass sich das Ziel-Objekt dabei bereits in Sichtlinie des ersten Objekts befinden muss? Über die Boardsuche konnte ich leider nichts finden, da ich beim besten Willen nicht weiß, welche Suchwörter ich benutzen sollte, ohne dass gleich hunderte unrelevanter Treffer kommen. Sollte es für sowas einen Befehl geben, den ich sogar kenne, aber im Moment nicht drauf kam, spül ich dafür zur Strafe als nächster das Geschirr in der Forenküche ![]() |
||
- Zuletzt bearbeitet von Nerle am Do, Nov 29, 2007 14:24, insgesamt einmal bearbeitet
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
entitydistance und pointentity müssten helfen
am besten du prüfst zu jedem die entfernung und schaust wer die kleinste hat. dann auf dieses objekt pointen und bewegen. leider bin ich jetzt nicht sonderbar fit in 3D, daher kann ich dir nicht mehr helfen. mfg Dottakopf |
||
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab deine Frage mal als Möglichkeit genutzt bissl was dazu zu lernen ^^
Hier mal ein Code von mir improvisiert Code: [AUSKLAPPEN] Graphics3D 0,0,32,1 SetBuffer BackBuffer() Type Tobj Field mesh Field posx Field posy Field posz Field red Field green Field blue End Type Anzahl=100 SeedRnd MilliSecs() For i=1 To Anzahl ct.Tobj = New Tobj ct\mesh=CreateCube() ct\posx=Rnd(-100,100) ct\posy=Rnd(-100,100) ct\posz=Rnd(-100,100) PositionEntity ct\mesh,ct\posx,ct\posy,ct\posz ct\red=Rand(1,255) ct\green=Rand(1,255) ct\blue=Rand(1,255) EntityColor ct\mesh,ct\red,ct\green,ct\blue Next kamera=CreateCamera() Kleinste_Distanz=10000000 While Not KeyHit(1) For ct.Tobj = Each Tobj Dist=EntityDistance(kamera,ct\mesh) If Kleinste_Distanz>Dist Then Kleinste_Distanz=Dist PointEntity kamera,ct\mesh MeshID=ct\mesh EndIf Next UpdateWorld RenderWorld Text 0,20,"MeshID: "+MeshID Text 0,40,"Distanz "+Kleinste_Distanz Flip Wend End Der Code arbeitet mit Types. Die Farbe bzw. Position des ausgewählten Objektes kannst du über ct\posx, usw. abfragen. Die Farbe mit ct\red, usw. Ich hoffe er hilft dir weiter! MfG. |
||
![]() |
Foppele |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hätte noch ne andere Idee und zwar eine Sphere um das suchende Objekt erstellen und die dann in einer Schleife gross skalieren und die Kollisionen checken... | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group