Mehrere Objekte unter einem Rechteck picken?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Apprauuuu

Betreff: Mehrere Objekte unter einem Rechteck picken?

BeitragFr, Sep 23, 2005 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo!
Ich schreibe momentan an einem 3d-Strategiespiel und frage mich grad wie ich es hinbekomme, dass alle einheiten angewählt werden, die unter einem rechteck sind, das man ziehen kann (wie esin solchen Spielen halt üblich ist ...)

Das ist erst mal der Code, wo meine Einheiten gepickt werden...
BlitzBasic: [AUSKLAPPEN]
If druck = True And maus_y < 570 And hausbau = 0 
einheitenauswahl = CameraPick(camera, maus_x, maus_y)
endauswahl = PickedEntity()
For a.einheit = Each einheit
If a\auswahl <> 0 And a\model<> endauswahl
FreeEntity a\auswahl
a\auswahl = 0
ElseIf a\model= endauswahl And a\auswahl = 0
a\auswahl = LoadSprite(\"auswahlkreis.PNG\", 4, a\model)
SpriteViewMode a\auswahl, 2
ScaleEntity a\auswahl, MeshWidth(a\model), MeshWidth(a\model),0
TranslateEntity a\auswahl, 0, 0, 0.9
RotateEntity a\auswahl, -180, 0, 0
EndIf
Next
EndIf



Wie mache ich das dann, dass ich dann halt alles in nem Rechteck und nicht nur auf den Maus-Koordiantn gepickt wird???
Soll man das in ner Schleife machen oder wie? Rolling Eyes
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax...
LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^)
 

Ava

Gast

BeitragFr, Sep 23, 2005 19:56
Antworten mit Zitat
Hm, mal überlegen... *lalala*

Du könntest vielleicht an den vier Eckpunkten den Untergrund picken, daraus die Kartenkoordinaten berechnen und diese mit allen Einheiten vergleichen. Dann wählste halt alle aus, die sich in diesem Bereich befinden. Oder so. Oder Du berechnest keine Kartenkoordinaten und vergleichst die 3D-Positionen direkt. Du könntest natürlich auch noch die Grösse der 3D Einheiten mit einbeziehen in den Vergleich. Vielleicht sogar ein MeshIntersect mit einem entsprechend skalierten/positioniertem 2-Poli-Rechteck (oder nen Quader) für alle Einheiten testen, die möglicherweise im Selektierungsbereich liegen.

Ja, hm, also das wären so spontan meine ersten Ideen dazu. Smile

Lieben Gruss,
~+ Ava +~
 

INpac

BeitragFr, Sep 23, 2005 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
da gehste falsch ran: nicht picken sondern: benutze die project-Funktionen; ist die 2d-position eines 3d-objektes > mx und < mx + width und so weiter, liegt es in deinem rechteck

also

x2d = projectedx()

Mr.Keks

BeitragFr, Sep 23, 2005 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
du kannst durch ql:cameraproject() die 2dkoords der einheiten herausfinden. und ob 2dkoordinaten in einem 2drechteck liegen, sollte nicht so schwer zu bestimmen sein Wink.

edit: hehe, inpac war schneller. aber es ist ja unser gemeinsames wissen ^^
MrKeks.net

Apprauuuu

BeitragFr, Sep 23, 2005 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Klasse!
Danke sehr!

Hab noch nicht so superviel Erfahrung mit B3d und kenne mich da halt noch nicht so supertoll aus -,-

Aber jetzt steht meinem Spiel nichts mehr im Weg Shocked
Arbeitsstand:
Umprogrammierung von LOL³Warriors und LOL³Fighters in Bmax...
LOL³Fighters wird spielerisch noch mal ordentlich aufpoliert, um es Ligatauglich zu machen (zumindest für private Funligen von mir ^^)

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group