Nur Objekte aus einem Radius anzeigen lassen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Toasty

Betreff: Nur Objekte aus einem Radius anzeigen lassen?

BeitragMo, Nov 08, 2010 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
für ein kleines RPG schreibe ich jetzt die NPCs.
Der Client soll alle 2 Sekunden abfragen, ob es NPCs im Umfeld von seiner Position gibt.

Wie stelle ich das an?

Forensuche hat nichts ergeben bzw. habe nach falschen Begriffen gesucht...

Gruß Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

ZaP

BeitragMo, Nov 08, 2010 14:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Entweder Du nimmst EntityDistance, oder Du schreibst dir eine 2D Distanz Funktion, die sollte etwas schneller sein. Das ist einfache Mathematik Smile
Starfare: Worklog, Website (download)
 

Toasty

BeitragMo, Nov 08, 2010 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
kannst du mir vielleicht einen Pseudo Code schreiben?
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Johannes´

BeitragMo, Nov 08, 2010 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir jetzt wirklich nicht sicher, ob ich dein Problem verstanden habe.
Scheitert es einfach an der Anzeige der NPCs im Radius? Oder brauchst du Netztwerk-Code?
Machst du das überhaupt in 3D?

Für einfache Radiusprüfung in 3D wäre es so (wenn du Types benutzt):
Code: [AUSKLAPPEN]
For n.npc=Each npc
   If EntityDistance(spieler,n\modell)<=radius Then
      ShowEntity n\modell
   Else
      HideEntity n\modell
   EndIf
Next


Wobei das Hide- und Showentity ja nicht immer passend ist.

Tennisball

BeitragMo, Nov 08, 2010 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Und in 2D benutzt man einfach den Satz des Pythagoras:

Code: [AUSKLAPPEN]
If Sqr((x2 - x1)^2 + (y2 - y1)^2) <= radius then ZeigeGegnerAn=True


mfg,
Tennisball

Ana

BeitragMo, Nov 08, 2010 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Für 2d sollte im allgemeinen ja auch einfach reichen, wenn du überprüfst, ob die x und y koordinaten >= 0 und <= bildschirmbreite/höhe sind. Außer du willst halt das sie erst später aufploppen
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine
 

Toasty

BeitragMo, Nov 08, 2010 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tennisball:
Okay so einfach geht das Smile
Ich hab das jetzt mal so gemacht:
Code: [AUSKLAPPEN]
If NPC_x(i)<Int(t_x#)+NPC_PLAYER_VISIBLE_RADIUS And NPC_x(i)>Int(t_x#)-NPC_PLAYER_VISIBLE_RADIUS Then
                     If NPC_y(i)<Int(t_y#)+NPC_PLAYER_VISIBLE_RADIUS And NPC_y(i)>Int(t_y#)-NPC_PLAYER_VISIBLE_RADIUS Then

Aber der Code ist 1.total unübersichtlich und ich denke mal dass der auch nicht funktioniert hätte...

Gruß und danke
Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group