aus mehreren types den nahesten raussuchen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Raoudi

Betreff: aus mehreren types den nahesten raussuchen

BeitragMo, Jan 30, 2006 23:16
Antworten mit Zitat
Benutzer-Profile anzeigen
versuche gerade einen ball zum ausweichen zu bringen

wenn er in die nähe eines steins kommt, soll er was bestimmtes machen.

nun habe ich viele steine, er soll sich den aussuchen der ihm am nächsten is

Code: [AUSKLAPPEN]
For warb.ball = Each ball
   If EntityDistance(sto\mesh,warb\mesh) < 5

   ;bla

   EndIf
Next



so werden alle steine abgefragt, was natürlich nicht sein sollte
 

Schnuff

BeitragDi, Jan 31, 2006 10:11
Antworten mit Zitat
Benutzer-Profile anzeigen
so vieleicht?
Code: [AUSKLAPPEN]

Near_Distance=1000
For warb.ball = Each ball
   If EntityDistance(sto\mesh,warb\mesh) < Near_Distance
      Near_Distance=EntityDistance(sto\mesh,warb\mesh)
   ;bla

   EndIf
Next
Programmers dont die. They gosub without return...
 

Raoudi

BeitragMi, Feb 01, 2006 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Schnuff hat Folgendes geschrieben:
so vieleicht?
Code: [AUSKLAPPEN]

Near_Distance=1000
For warb.ball = Each ball
   If EntityDistance(sto\mesh,warb\mesh) < Near_Distance
      Near_Distance=EntityDistance(sto\mesh,warb\mesh)
   ;bla

   EndIf
Next

is das gleiche. wenn ich die distance variable dann zeichne wird sie mehrmals gezeichnet (in meinem beispiel), da mehrere steine angesprochen sind. von denen soll nur einer (der naheste)
es geht nich direkt darum die nähe zu ermitteln
 

Ava

Gast

BeitragMi, Feb 01, 2006 15:42
Antworten mit Zitat
Aber um die kürzeste Distanz zu bestimmen wirst Du zwangsläufig immer alle Distanzen überprüfen/ermitteln und miteinander vergleichen müssen. Amders ist das wohl kaum möglich. Allerdings kannst Du optimieren, indem Du zb eine Variable setzt wenn sich eines der Objekte bewegt. Dann überprüfst Du nur diese Variable und wenn sie gesetzt ist, ermittelst Du das Objekt mit der kürzesten Distanz, speicherst es Dir in einer anderen Variable und resetest die erste Variable. (Du könntest aber auch für beides die selbe Variable benutzen. Wenn diese Variable = null ist, führst Du Deine Funktion durch und speicherst in ihr das Objekt. Wenn sich etwas bewegt, setzt Du sie wieder auf Null).

Das alles macht natürlich nur Sinn, wenn sich die Objekte nicht durchweg in Bewegung befinden. Wink

Aber zur Bestimmung der kürzesten Distanz, bleibt Dir keine andere Möglichkeit, als alle Distanzen abzuarbeiten.
 

Raoudi

BeitragMi, Feb 01, 2006 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ava hat Folgendes geschrieben:
Aber um die kürzeste Distanz zu bestimmen wirst Du zwangsläufig immer alle Distanzen überprüfen/ermitteln und miteinander vergleichen müssen. Amders ist das wohl kaum möglich. Allerdings kannst Du optimieren, indem Du zb eine Variable setzt wenn sich eines der Objekte bewegt. Dann überprüfst Du nur diese Variable und wenn sie gesetzt ist, ermittelst Du das Objekt mit der kürzesten Distanz, speicherst es Dir in einer anderen Variable und resetest die erste Variable. (Du könntest aber auch für beides die selbe Variable benutzen. Wenn diese Variable = null ist, führst Du Deine Funktion durch und speicherst in ihr das Objekt. Wenn sich etwas bewegt, setzt Du sie wieder auf Null).

Das alles macht natürlich nur Sinn, wenn sich die Objekte nicht durchweg in Bewegung befinden. Wink

Aber zur Bestimmung der kürzesten Distanz, bleibt Dir keine andere Möglichkeit, als alle Distanzen abzuarbeiten.

klingt einleuchtend, thx =]

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group