Arry-Index rausfinden

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Donner

Betreff: Arry-Index rausfinden

BeitragSa, Feb 12, 2005 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Leute!

Ich hab mal ne einfache frage: Wenn ich z.B. Meshs in nem array gespeichert hab und dann auf kollision mit dem Spieler überprüfe und ich mit entitycollided geprüft habe, welches objekt das ist, dann liefert mir das das Objekt zurück! Wie kann ich jetzt aber rausfinden welche Index-Nummer das Objekt hat?

Bsp:

Code: [AUSKLAPPEN]
dim Mesh(10)
mesh(1) = Loadmesh("MESHPFAD1")
mesh(2) = Loadmesh("MESHPFAD2")
mesh(3) = Loadmesh("MESHPFAD3")
mesh(4) = Loadmesh("MESHPFAD4")
mesh(5) = Loadmesh("MESHPFAD5")
mesh(6) = Loadmesh("MESHPFAD6")
mesh(7) = Loadmesh("MESHPFAD7")
mesh(8) = Loadmesh("MESHPFAD8")
mesh(9) = Loadmesh("MESHPFAD9")
mesh(10) = Loadmesh("MESHPFAD10")

(...)
cmesh = entitycollidet(cam, 2)


Und ich jetzt z.B. das collidierende Objekt skalieren will, brauch ich ja die Index-Nummer

Code: [AUSKLAPPEN]
scaleentity mesh(WIE FINDE ICH DIE NR DES KOLLIDIERTEN OBJEKTS RAUS?),2,2,2


Ich hoffe ihr habt meine Frage verstanden (Was vielleicht nich grad einfach is!)

Donner
 

OJay

BeitragSa, Feb 12, 2005 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
dein array in einer schleife durchgehen und jedes mesh einzeln prüfen?
 

Donner

BeitragSa, Feb 12, 2005 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinst du so?

Code: [AUSKLAPPEN]
for meshnummer = 1 to 10
 if cmesh = mesh(meshnummer) then exit
next
 

Klaas

BeitragSa, Feb 12, 2005 18:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Donner,
es gibt eine wesentlich efektivere variante die aber etwas komplexer zu bedienen ist.

und zwar wie folgt:

man mache sich einen Type für die Entiies
Code: [AUSKLAPPEN]

Type entity
  field mesh
  field name$
  field eigenschaft$
end type


bei jedem laden legt man einen neuen Type an

Code: [AUSKLAPPEN]

a.entity = new entity
a\mesh = loadmesh("meinmesh.b3d")
a\name = "Hugo"
a\eigentschaft = "voll gut"


daraus macht man sich am besten eine funktion

Code: [AUSKLAPPEN]

function xloadMesh(filename$,name$,eigenschaft$)
a.entity = new entity
a\mesh = loadmesh(filename)
a\name = name
a\eigentschaft = eigenschaft
return a\mesh
end function


und immer wenn man ein mesh läd dann benennt man das mesh wie das Handle des Types

Code: [AUSKLAPPEN]

function xloadMesh(filename$,name$,eigenschaft$)
a.entity = new entity
a\mesh = loadmesh(filename)
a\name = name
a\eigentschaft = eigenschaft

nameentity(a\mesh,handle(a))

return a\mesh
end function


wenn man jetzt ne Kollision hatte dann nimmt man den Namen(ist ja das Handle) und holt sich damit den entsprechenden Type

Code: [AUSKLAPPEN]

collisionsMesh = collisionEntity(entity,index)
a.entity = object.entity(entityName(collisionsMesh))
print "Kollision mit "+a\name
print "seine Eigenschaft "+a\eigenschaft


so kannst du direkt auf die Eigenshaften eines Entities zurückgreifen ohne durch eine lange Liste von Objekten laufen zu müssen

P.S.: den Code hab ich nur aus dem Gedächnis geschrieben .. kann also Fehler enthalten. zudem sind die Befehle "handle" und "Object" eigentlich undokumentierte Befehle .. aber ich benutze sie selber sehr häufig und hatte nie Probleme (nur zur Info)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group