die zu einem objekt dazugehörigen objekte finden.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

rctuner

Betreff: die zu einem objekt dazugehörigen objekte finden.

BeitragDi, Mai 01, 2007 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo

mein problem ist nicht ganz leicht zu erklären, ich versuchs einfach mal:
ich erstelle in meinem spiel autos mit types. so hat jedes auto dann zum Beispiel: Au\wheelFR, Au\wheelFL, Au\wheelBR...
und karosserie: Au\veh.

Nun möchte ich in die Autos einsteigen können. Wie bei GTA.
Dazu hab ich dem Auto ein Pickwert gegeben und dann CameraPick [mycar=PickedEntity()] benutz um zu überprüfen in welches auto eingestiegen wird.

Nun könnte ich einfach "if keydown(key) then moveentity mycar" machen.
Das Problem sind aber die dazugehörigen Räder, die zum auto gehören. Ich müsste irgendwie herausfinden welche räder denn jetzt zu dem auto gehören und sie dann drehen. Die Räder sind dem Auto via Newton Physik Engine hinzugefügt.

Wie könnte das funktionieren?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

Mr.Keks

BeitragDi, Mai 01, 2007 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Wohl oder übel musst du da mit einer Schleife rangehen.
Code: [AUSKLAPPEN]
For a.TAuto = Each TAuto
 If a\veh = mycar Then CarDrivenByPlayer.TAuto = a : Exit
Next
MrKeks.net

darth

BeitragDi, Mai 01, 2007 21:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ich machs immer mit nummern,
dass jedes teil des autos die nummer 1,2,3,... hat.
dann kann man alle versch. teile durchgehn, iffrage nach selber nummer und gut is.
Diese Signatur ist leer.

rctuner

BeitragDi, Mai 01, 2007 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
irgendwie versteh ich das nicht ganz. Und hinzu kommt auch noch ein neues Problem: ich kann dem Physik Auto keinen Pick-Wert geben und somit auch kein CameraPick verwenden wie ich es eigendlich vor hatte. Damit wir uns auch richtig verstehen hier nochmal mein Problem auch auf meinen Code bezogen:
Ich hab mehrere Autos die auf meiner map rumfahren.
Das Auto selbst "au\veh" und dazugehörige Objekte von der Physik Engine wie zum Beispiel: "au\tireBL".
Wie könnte ich jetzt das "Einsteigen" programmieren? Dazu müsste ich irgendwie herausfinden welches Auto genau da gerade vor mir steht. (Es sind ja viele auf der map) Damit ich dann das Auto bewegen kann. Und wie gesagt gehört zu den Autos auch noch Räder. Ich müsste also dazu noch herausfinden welche Räder zu dem Auto gehören wo ich gerade eingestiegen bin, da ich beim Fahren auch die Räder meines Autos ansprechen muss um sie zu Drehen.

Sollte irgendwie mit Types gehen, aber wie? Ich versteh nicht wie ich herausfinde welches Auto es ist und dann noch die Räder zu dem Auto finde.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragDi, Mai 01, 2007 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
moved da im falschen Board
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rctuner

BeitragMi, Mai 02, 2007 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
so einfach, dass es in den beginners corner kommt und keiner kann helfen?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Problemchen

BeitragMi, Mai 02, 2007 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
das Auto zu identifizieren sollte über eine Distanzberechnung gehen, da du ja irgendwo die Koordinaten abgreifen kannst. Oder mach' einen Pick und verbinde die pickbaren Entitys in deinem Type mit den Physikobjekten über eine Unique ID.
Dann halte zu jedem Objekt eine weitere ID vor, die zusammengehörende Teile kennzeichnet. Damit identifizierst du die das komplette Auto bis runter zur einzelnen Schraube...
Sollte keine große Sache sein, deswegen hat's Dreamora wohl verschoben Wink
Problemchen

rctuner

BeitragMi, Mai 02, 2007 21:34
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für die antwort.
aber wie genau soll ich denn überprüfen welche teile zusammen gehören und überhaupt erstmal abfragen welche ID die Teile haben? Hab noch nicht so viel erfahrungen mit Types.

So erstelle ich die Autos:

Au.Car=New Car

Au\Auto=LoadMesh("data\models\cars\car1\cmro.3ds")
Au\wheelBR=.....
.........

und so ca. sieht die Type Liste aus:

Type car
Field tireBR
Field wheelBR
Field tireBL
Field wheelBL
Field tireFR
Field wheelFR
Field tireFL
Field wheelFL
Field omegaBL#
Field omegaBR#
End Type
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]

rctuner

BeitragDo, Mai 03, 2007 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe jetzt versucht arrays für die types zu definieren um so nur das Auto und den Type mit dem Array zu bewegen, welches ich auch fahre.

Hier sollten ALLE Physik Autos upgedaten werden:

For all=1 To 3 ; 3, weil 3 Autos erstellt wurden (Die Autos müssen alle mit dieser Funktin auf Grund der Physik Engine upgedated werden)
PositionEntity au\wheelBL[all], phJointVehicleGetTireX(au\veh[all], au\tireBL[all]), phJointVehicleGetTirey(au\veh[all], au\tireBL[all]), phJointVehicleGetTirez(au\veh[all], au\tireBL[all])
RotateEntity au\wheelBL[all], phJointVehicleGetTirePitch(au\veh[all], au\tireBL[all]), phJointVhicleGetTireyaw(au\veh[all], au\tireBL[all]), phJointVehicleGetTireRoll(au\veh[all], au\tireBL[all]),1
next

Und hier nur mein Auto:
ID=1 ; Auf 1 nur zu Testzwecken gesetzt. Später soll die ID vom Auto abgefragt werden und dann unten nur das Auto mit der ID bewegt werden.
If KeyDown(200)
omegaBL# = phJointVehicleGetTireOmega(au\veh[ID], au\tireBL[ID])
omegaBR# = phJointVehicleGetTireOmega(au\veh[ID], au\tireBR[ID])
EndIF


Und so erstelle ich dann in der Funktion ein Auto (insgesammt erstelle ich 3):

AID=AID+1
au\veh[AID] = phJointVehicleCreate(0,1,0,bodycar)

Doch komischer weise bekomme ich immer ein MAV. Wieso? Funktioniert das nicht mit den Arrays?
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragDo, Mai 03, 2007 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
vermutlich weill du net au.Auto = new Auto gemacht hast vorher
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

rctuner

BeitragDo, Mai 03, 2007 21:16
Antworten mit Zitat
Benutzer-Profile anzeigen
leider nein. in der funktion, in der ich die autos erstelle hab ich ein Au.Wagen=New Wagen drin.
[Y[our Film, Game ]M[akers and more [F]un!
www.Master-Entertainment.de.vu

[AMD 6000+ X2 @ 6400+][2GB RAM][NVidia 8800GT 512 MB]
 

Dreamora

BeitragDo, Mai 03, 2007 22:53
Antworten mit Zitat
Benutzer-Profile anzeigen
und die gibst du dann auch zurück bzw. weisst dem au auf das du da zugreifst auch eine existierende type variable zu?
(weil ausserhalb der funktion existiert das au der funktion nimmer)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group