MoveEntity und Gravity ! ?
Übersicht

![]() |
eXceptIONBetreff: MoveEntity und Gravity ! ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
als ich ein Helicopter Simulation mache, habe ich eben einen Problem gefunden...
das Helikopter soll nach local Y-axis nach oben fliegen wenn der Spieler "nach oben" drückt... Logischerweise... Code: [AUSKLAPPEN] if (KeyHit(upkey%)) then ys# = ys# + 0.001 ;oder irgendsowas...
MoveEntity(heli, 0, ys#, 0); na gut... das Helicopter kann sich auch drehen, durch Y, Z und X... so... MoveEntity() bringt das Helicopter schon in die richtige richtung... was mache ich jetzt mit die Gravity? die soll ja das Helicopter direct nach mitte erde bringen (global Y-axis)!!! das kann ich ja nicht mit MoveEntity(), aber TranslateEntity()? Code: [AUSKLAPPEN] TranslateEntity(heli, 0, gr#, 0) ;das hier ist unsinn... :S
gr# = gr# + 0.001 könnt ihr das problem schon verstehen? oder braucht ihr mehr erklärungen? |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
doch, translateentity stimmt schon. damit müsste es gehen. | ||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
lol... wieso beginner frage? ![]() nein, TranslateEntity() ist unbenutzbar... TurnEntity() auch... ich muss eben selber'ne 3d-rotations formel errechnen, um das hinzukriegen was ich meine... und dann halt PositionEntity() und RotateEntity() benutzen... kacke dass mein deutsch so schlecht ist dass ich euch es nicht erklären kann... |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich denke frigi müsste recht haben, denn laut Onlinehilfe bewirkt translateentity: Zitat: TRANSLATEENTITY Entity, X#, Y#, Z# [,Global]
Beschreibung Blitz3D Die Anweisung TRANSLATEENTITY verschiebt ein Objekt (entity) um einen bestimmten XYZ-Abstand. Beachte, dass das Objekt relativ zu seiner Position verschoben wird, wobei die Drehwinkel nicht beachtet werden. Der optionale Parameter "Global" gibt an, ob die Drehwinkel vom Parent-Objekt berücksichtigt werden sollen. Bei 0 werden die Winkel des Parent-Objekts beachtet. Bei 1 wird es unabhängig vom Parent-Objekt verschoben Da die Drehwinkel nicht beachtet werden bedeutet ein translateentity 0,grav,0 immer eine Verschiebung auf der Globalen y-Achse. Was nicht stimmt ist das hier: Code: [AUSKLAPPEN] gr# = gr# + 0.001 da du ja die Gravitation so lange erhöhst bis die Steigfähigkeit des Helikopters kleiner als der "Gravitationssog" ist.
Entweder du ziehst also einen festen Betrag ab (gr#=.001) oder aber du weisst dem Helikopter auch nach oben eine Geschwindigkeit zu (sein Throttle) und "subtrahierst" die Gravitation von dieser Steiggeschwindigkeit (delty_y#=throttle#+gr#). Nur so als Idee... [OT] wie kommt ein Norweger auf n deutsches Forum? Aber Herzlich Willkommen, immer wieder mal schön neue Leute hier zu haben ![]() [/OT] |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für das tipp
nur... es ist trotzdem nicht ganz was ich versuche... dieses helikopter hat mehrere throttles... sogar 3... yaw, pitch and engine (nach local oben) (und NICHT roll, dazu noch mehr später) roll wird durch maus x position geändert pitch durch maus y und yaw durch [a] und [d] engine durch [w] beispiel: (lass erstmal gravity aus...) für etwa 3 sekunden halte ich [a]... das helikopter dreht sich schneller und schneller rundum y axis (yaw), also horizontal drehung danach ziehe ich die maus nach oben... das helikopter fängt an zu pitchen... jetzt soll der helikopter in die boden schauen wärend die yaw rotation constant sein soll... argh... schwierig zu erklären... ![]() also... das helikopter soll pitchen bis es direct nach uten schaut... jetzt soll es so aussehen als hätte es gerollt (durch z-axis) wenn ich JETZT [a] noch 3 sekunden halte, soll es wieder anfangen zu yaw'en... obwohl es jetzt "rollt" .... lol... kannst du das verstehen? egal... probier jetzt mit gravity... das helikopter guck in irgendeiner richtung... halte ich [w] gedrückt, soll es schneller und schneller in local y axis nach "oben" wärend gravity es direct nach unten zieht... okay... es ist komplex... oder? was kann gemacht werden? Grüße aus Norwegen! ![]() |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry, aber ich versteh dein problem nicht so ganz ![]() so wie ich es verstanden habe, würde es ausreichen, wenn man mit translateentity den helikopter immer zum boden "zieht". damit er dann abhebt muss man diese kraft überwinden. so würde er relativ realistisch fliegen.... |
||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
stimmt, nur die "überwindungs" kraft soll sich verändern wenn das helikopter rollt oder pitcht... wie, jetzt, verändere ich diese kraft? | ||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
die "Überwindungskraft" ist einfach die kraft, die der rotor vom heli "wegdrückt". dadurch wird er vom boden fern gehalten. wenn sich der helikopter nun neigt, (und die kraft, mit der der helikopter abhebt mit moveentity erzeugt wird) wirkt die kraft nicht mehr zum boden, sondern in eine andere richtung (hinten, vorne,.....). -> der heli sinkt.
P.S.: keine ahnung, ob ich dich jetz richtig verstanden habe, aber so würde ich nun mal einen heli simulieren :/ |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab von 3D keine Ahnung, aber soweit ich weiß läßt sich doch auch recht einfach der Neigungswinkel eines Objekts auskundschaften. Daraus könnte man dann den prozentualen Verlust an Auftrieb errechnen und trala ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
frigi |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja, ich habs noch nie ausprobiert,(bin auch eher der 2dler) aber ich denke meine methode würde schon reichen ![]() |
||
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
@frigi: deine metode reicht, wenn das helikopter immer in die horizonte schaut und sich nie pitcht oder rollt... die "überwindungs" kraft ist optimal in diese position... es soll aber niedriger (durch trigonometrie ausgerechnet, weiss ich) werden wenn es so nicht der fall ist... ![]() @hubsi: lustig... ![]() guckt euch battlefield: desertcombat-mod an... der helikopter physik da ist was ich meine... |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmmm...
meine Idee wäre: erstelle einen pivot 0,1,0 (relativ) zu deinem helikopter (also über ihm) der als Child des Helis fungiert. Wenn du nun die entityx,entityy und entityz von Heli und Pivot voneinander subtrahierst erhälst du die %-verschiebung des Helis auf den einzelnen Achsen. Nun kannst du die höhe*verschiebung als throttle nutzen. Ungetestet, sollte aber theoretisch funktionieren. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
hmm... möglicherweise genial... werde versuchen... ![]() |
||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube ich bin zu doof... kriege es nicht hin... | ||
Norweger...
Spreche aber verdammt gut 8086 |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur ein simpler test, sicher noch ausbaufähig. Der code ist recht Dirty da schnell hingesaut (zudem bin ich in 3D sehr unerfahren):
Code: [AUSKLAPPEN] Graphics3D 640,480 SetBuffer BackBuffer() Kamera=CreateCamera () light=CreateLight(1) RotateEntity light,90,0,0 cube=CreateCube() EntityColor cube,100,100,255 piv=CreatePivot(cube) ku=CreateSphere(5,piv) PositionEntity kamera,0,0,-5 PositionEntity piv,0,1,0 PositionEntity cube,0,0,0 geschw#=150 While Not KeyDown(1) TurnEntity cube,.35,1,0 RenderWorld Text 0,0,EntityX(cube,1)+" ,"+EntityY(cube,1)+" ,"+EntityZ(cube,1) Text 0,30,EntityX(piv,1)+" ,"+EntityY(piv,1)+" ,"+EntityZ(piv,1) x#=EntityX(cube,1)-EntityX(piv,1) y#=EntityY(cube,1)-EntityY(piv,1) z#=EntityZ(cube,1)-EntityZ(piv,1) Text 0,60,(x*-1)+"x ,"+(y*-1)+"y ,"+(z*-1)+"z" Text 0,90,"Geschwindigkeit:"+geschw+" Mit Rotation:"+(geschw*(y*-1)) Flip Wend End Aber es funktioniert (wahrscheinlich...) ![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
eXceptION |
![]() Antworten mit Zitat ![]() |
---|---|---|
okey, mein programm(hol dir eine schöne grastexture...ja und fixe die geschwindigkeit constanten, wenn's zu schnell läuft):Code: [AUSKLAPPEN] Graphics3D(800, 600, 32, 1)
wie du siehst, es ist FAST wie desertcombat... fehlt nur RICHTIGE dynamic beim rotierung, und ich habe schwerkraft ausgelassen...
SetBuffer(BackBuffer()) Cam = CreateCamera() Lgt = CreateLight(3, Cam) LightConeAngles(Lgt, 25, 70) LightRange(Lgt, 10) AmbientLight(192, 192, 192) Pln = CreatePlane(16) PlnTex = LoadTexture("C:\B3D_Projects\GFX\grass1.BMP", 8) EntityTexture(Pln, PlnTex) ScaleTexture(PlnTex, 15, 15) Global ax# = 0, ay# = 0, az# = 0 Global px# = 0, py# = 5, pz# = 0 While Not KeyHit(1) ;[ESC] MoveMouse(400, 300) axs# = axs# - MouseYSpeed() / 20000.0 azs# = azs# - MouseXSpeed() / 20000.0 If (KeyDown(17)) Then ;[W] engine# = engine# + 1.0 / 500000.0 ElseIf (KeyDown(31)) Then ;[S] Else engine# = engine# - 1.0 / 2000000.0 End If If (engine# < 0) Then engine# = 0 If (KeyDown(30)) Then ;[A] ays# = ays# + 1.0 / 20000.0 ElseIf (KeyDown(32)) Then ;[D] ays# = ays# - 1.0 / 20000.0 End If ax# = ax# + axs# ;kannst auch RotateEntity benutzen, dann halt mit diese, ay# = ay# + ays# ;diese, az# = az# + azs# ;und diese... TurnEntity(Cam, axs#, ays#, azs#, 0) PositionEntity(Cam, px#, py#, pz#) UpdateWorld() RenderWorld() Line(400, 295, 400, 305) Line(395, 300, 405, 300) Flip() Wend End |
||
Norweger...
Spreche aber verdammt gut 8086 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group