TurnEntity und RotateEntity zusammen verwenden

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

rctuner

Betreff: TurnEntity und RotateEntity zusammen verwenden

BeitragFr, Mai 19, 2006 15:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Ich hab ein Problem mit TurnEntity. Und zwar drehe ich mein Rad wenn das Auto fährt Wink Nun möchte ich aber auch beim Lenken die Räder drehen. Also nach links/rechts. Das hab ich dann mit RotateEntity versucht. Nur bleibt dann das TurnEntity stecken weil RotateEntity es ja festhält... Sad

Irgendjemand ne Idee?

Christoph

BeitragFr, Mai 19, 2006 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach beides mit Turnentity

Christoph

BeitragFr, Mai 19, 2006 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du machst es so:
Code: [AUSKLAPPEN]
rotateentity entityx(Entity),entityy(Entity),entityz(Entity)

Jetzt einfach das dazumachen was du willst.
Code: [AUSKLAPPEN]
rotateentity entityx(Entity),entityy(Entity)+1,entityz(Entity)

rctuner

BeitragFr, Mai 19, 2006 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
soweit ich weiß geben entityX,entityY,.... Mir nur die Positionen.

Du meinst wohl eher : ENTITYYAW,.....

Danke ich werds mal probieren

Christoph

BeitragFr, Mai 19, 2006 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Tschuldigung hab ich verwechselt. Was du sagtest stimmt natürlich. Wink
Arrow Ein Hacken hat die Sache aber doch:
Was ist wenn entityyaw(Entity)=170 ist und 15° dazuaddiert werden!!! Confused
Dann gibt's glaub ich einen Fehler.

Christoph

Betreff: --->Turnentity

BeitragFr, Mai 19, 2006 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann wohl doch lieber Turnentity:
Code: [AUSKLAPPEN]
turnentity Rad,0,Radrichtung,Radgeschwindigkeit
Wink
 

Dreamora

BeitragFr, Mai 19, 2006 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Das kann man transformieren Smile

NewYaw = ( ( (entityyaw(ent) + 180) + winkel ) mod 360 ) - 180
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Christoph

BeitragFr, Mai 19, 2006 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hätte ich neulich gebracht. (Ist ja kein Copyright drauf, also kopier ich's) Wink

rctuner

BeitragFr, Mai 19, 2006 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
[Edit] Hab das Problem nun gelöst indem ich zweimal Turn benutzt hab und bei der Lenkung ihn nicht zum Parent drehen lasse, sondern zur 3d welt.
THX für die Hilfe
[/EDIT]

rctuner

BeitragFr, Mai 19, 2006 22:31
Antworten mit Zitat
Benutzer-Profile anzeigen
so, kaum hab ich das Problem gelöst, steht schon das nächste eigendlich erwartete Problem vor der Tür.

Und zwar muss TurnEntity ja auch mal stoppen wenn der Rad-Einschlag erreicht ist. (Halt wie bei einem Richtigem Auto, da kann man das Lenkrad ja auch nicht unendlich lang drehen)

Das hab ich dann ca. so Probiert;

If KeyDown(203)
raddreh = 1
If Rad_drehungY# > 30 Then raddreh = 0
TurnEntity model_wheels,0,raddreh,0,1

Also wenn der Winkel erreicht ist, soll er aufhören zu drehen. Das klappt auch ganz gut solange ich noch mit dem auto stehe. Aber da ich den TurnEntity jetzt auf "absulut zur 3d welt gestellt hab (siehe Beiträge oben) verändert sich der Winkel logischerweise auch wenn das Auto sich dreht und der Radeinschlag hört dann erst wann anders auf....

Was könnte ich tun?

rctuner

BeitragSa, Mai 20, 2006 23:46
Antworten mit Zitat
Benutzer-Profile anzeigen
keiner ne Idee wie ich das machen könnte???? Confused

Markus2

BeitragSa, Mai 20, 2006 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Häng das Rad einfach an nen Pivot und benutze fürs
Rollen TurnEntity und zum lenken RotateEntity .
Fürs Rollen einfach die Geschwindigkeit in Grad pro Sekunde
umrechnen . (Dazu brauchst du auch den Radumfang)
Für Lenkrad einschlagen z.B. begrenzen von - 30 bis 30 Grad .

rctuner

BeitragDi, Mai 23, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habs jetzt so gemacht:

ifkeydown() ; nach links Lenken
RotateEntity model_wheels,EntityPitch(model_wheels),-30,EntityRoll(model_wheels),0 ; Drehen Wenn Gelenkt wird um 30 Grad um Yaw

TurnEntity car,0,-5.5*speed,5*speed ; Das Auto drehen

endif



und:


TurnEntity model_wheels,speed*20,0,0 ; die Räder drehen wenn das Auto fährt

If raddreh = 0 Then RotateEntity model_wheels,EntityPitch(model_wheels),0,EntityRoll(model_wheels),0 ;
Wenn Lenkung nicht bestätigt dann Räder wieder Ausrichten



So nur hab ich jetzt das Problem dass sich das Rad kurz nach vorne dreht, dann plötzlich um 180 Grad gedreht wird. Sich rückwärts dreht... Und dann wieder um 180 Grad dreht.... und das tut es die ganze Zeit..

Hat jemand ne lösung oder tipp?

Markus2

BeitragDi, Mai 23, 2006 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm,
versuche es erstmal so

if nach links Lenken
lenken=-30
elseif nach rechts Lenken
lenken=30
else
lenken=0
endif

RotateEntity model_wheels,0,lenken,0

Auto drehen um Roll also Z Achse verstehe ich nicht !?

TurnEntity model_wheels,speed*20,0,0 sieht so ok aus

wie ich sehe hast du keinen Pivot benutzt weil du
model_wheels zweimal benutzt *GRR*
Du mußt dir erstmal eine(zwei) Achse schaffen die so
steht wie die Stoßdämpfer und da dann das Rad dran hängen .
Im 3D Programm könntest du ein NULL Objekt benutzen ,
so heißt es jedenfalls in C4D .

rctuner

BeitragDi, Mai 23, 2006 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
habs noch net ausprobiert, aber mir ist das aufgefallen:


Zitat:


RotateEntity model_wheels,0,lenken,0

TurnEntity model_wheels,speed*20,0,0 sieht so ok aus



Die Räder werden durch Turnentity gedreht, werden durch RotateEntity model_wheels,0,lenken,0 wieder festgehalten. Also wegen dem 0,lenken,0
Werden dann also immer wieder auf 0,lenken,0 gesetzt....

So kann das doch garnet funktionieren, ?!

Markus2

BeitragDi, Mai 23, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Darum schrieb ich doch :

wie ich sehe hast du keinen Pivot benutzt weil du
model_wheels zweimal benutzt *GRR*

Lese mal was über Pivot ,
ich glaube du weißt nicht was und wofür der da ist .

rctuner

BeitragDi, Mai 23, 2006 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
achso ich glaube ich habs jetzt verstanden was du meinst: Eine achse. An der Achse hängen die Räder. Die Achse wird gedreht, somit auch die Räder.

Oder?



Naja ich habs jetzt immer so versucht dass sich die Räder um sich selbst drehen...

Habs aber leider immer nochnicht geschafft Sad Kannst mir das vielleicht nochmal genauer zeigen? *am Verzweifeln*

Markus2

BeitragDi, Mai 23, 2006 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
So , hier mal nen Beispiel .

Ein Pivot ist eigentlich nur ein unsichtbares Objekt ,
zur Hilfe solltest du es dir z.B. als Würfel anzeigen lassen .

Code: [AUSKLAPPEN]

Graphics3D 800,600
SetBuffer BackBuffer()

c=CreateCamera()
PositionEntity c,-5,0,-8

l=CreateLight()

auto=CreateCube()
ScaleMesh auto,2,1,3

c1=CreateCube(auto) ;Stoßdämpfer
EntityColor c1,255,255,0
PositionEntity c1,-2.2,-0.5,1.4

c2=CreateCube(c1) ;Rad
EntityColor c2,128,128,128

ScaleMesh c1,0.1,1,0.1
ScaleMesh c2,0.1,0.5,0.5
PositionEntity c2,-0.5,-0.5,0

PointEntity c,auto

While Not KeyHit(1)
 RenderWorld

 RotateEntity c1,0,Sin(w)*30.0,0
 w=w+1:If w>360 Then w=w-360

 TurnEntity c2,1,0,0

 Flip
Wend
End

rctuner

BeitragMi, Mai 24, 2006 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
hey danke vielmals, das Besipiel hat mir sehr geholfen!!! Habs jetzt endlich (nach 10 Tagen Qual) hinbekommen^^

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group