3 registered members (7th_zorro, Aku_Aku, 1 invisible),
579
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Panzerturm an Wanne ausrichten!
#130205
05/16/07 17:27
05/16/07 17:27
|
Joined: Nov 2005
Posts: 174 saarland
hahn51
OP
Member
|
OP
Member
Joined: Nov 2005
Posts: 174
saarland
|
Hallo! Ich habe da ein kleines Problem! Ich erzeuge mit ent_create den Turm auf dem Panzer. Soweit ok ich lasse x,y,z,tilt,roll des Turmes mit den werten der wanne abgleichen. Wenn ich jedoch den turm um 90 Grad drehe über nimmt er beim Fahren den Tilt der Wanne dann wippt der Turm nach rechts was er natürlich nicht soll! Was muss ich jetzt machen damit der Turm immer gerade bleibt und den Bewegungen der Wanne mitgeht egal wie ich ihn drehe? Soweit habe ich das: Code:
function turm_action() {
turm=me; while(1) { my.pan=camera_view.pan+180; my.tilt=player.tilt; my.roll=player.roll; my.x=player.x; my.y=player.y; my.z=player.z;
wait(1); }
} Danke Schonmal gruß Michael
|
|
|
Re: Panzerturm an Wanne ausrichten!
[Re: hahn51]
#130206
05/18/07 08:33
05/18/07 08:33
|
Joined: Jul 2001
Posts: 6,904
HeelX
Senior Expert
|
Senior Expert
Joined: Jul 2001
Posts: 6,904
|
Probier mal das, hab ich allerdings nicht getestet: Code:
1 function turm_action() 2 { 3 turm = my; 4 5 while(1) { 6 7 vec_set(my.x, player.x); 8 vec_set(my.pan, player.pan); 9 ang_add(my.pan, vector((camera_view.pan+180-player.pan),0,0)); 10 11 wait(1); 12 } 13 14 } Das Prinzip ist folgendes: du setzt den Turm auf die Position des Panzers (Z.7), dann drehst du den Turm wie den Panzer (Z.8). In Zeile 9 addierst du dann auf die Turmrotation (pan) ein offset. Ich habe jetzt die Formel (camera_view.pan+180-player.pan) benutzt aber das ist wahrscheinlich so nicht richtig. Besser wäre es, wenn du eine einfache offset Variable benutzt, die du dann durch die Mausbewegung veränderst. Also sowas wie offset += mouse_force.x * 5 * time_step; oder so. Ich hab in dein Skript auch etwas ersetzt, nämlich einige Zeilen durch vec_set. Damit lässt sich der Code vereinfachen. Solche my.x = you.x; Orgien plustern den code nur auf. Probiere das einfach mal aus und versuche das mit der offset Variable.
|
|
|
Re: Panzerturm an Wanne ausrichten!
[Re: Xarthor]
#130211
05/19/07 13:32
05/19/07 13:32
|
Joined: Nov 2005
Posts: 174 saarland
hahn51
OP
Member
|
OP
Member
Joined: Nov 2005
Posts: 174
saarland
|
Hallo! Also ich erkläre es mal nochmal ausführlich^^ Ich erstelle den Turm in der Wannenfunktion. Dann setze ich den Turm via Script auf die richtige stelle der Wanne! Code:
function turm_action() {
turm=my; while(1) { my.pan=camera_view.pan+180; my.x=player.x; my.y=player.y; my.z=player.z; my.tilt=player.tilt;
wait(1); }
}
Mit dem Code drehe ich den Turm pan syncron zum Kamera pan. Der Tilt des Turmes wird vom tilt der Wanne (player) übernommen. wenn das Rohr gerade nach vorne zeigt und ich die Steigung hochfahre dann übernimmt der Turm den Tilt der Wanne und es ist alles wies sein soll. Wenn ich dann aber den turm um z.b. 90 grad drehe dann übernimmt er ja immer noch den tilt der dann aber ja noch vorne geht wie sonst auch allerdings ist bei 90 grad vorne dann ja links und rechts und das ist der fehler! Der Turm soll einfach in jeder Position wie angeschweist auf der Wanne sitzen jetzt verstanden?
|
|
|
Re: Panzerturm an Wanne ausrichten!
[Re: hahn51]
#130212
05/19/07 13:48
05/19/07 13:48
|
Joined: Jul 2002
Posts: 4,436 Germany, Luebeck
Xarthor
Expert
|
Expert
Joined: Jul 2002
Posts: 4,436
Germany, Luebeck
|
Jap verstanden. Schonmal über c_rotate nachgedacht? Das bietet dir genau das was du brauchst.
Zwei zeilen für dein problem: vec_set(my.pan,player.pan); c_rotate(my,vector(camera_view.pan+180,0,0),use_axisr);
edit: statt c_rotate könntest du auch ang_rotate benutzen.
edit #2: und bitte benutz: vec_set(my.x,player.x); alles andere is ja ein krampf.
Last edited by Xarthor; 05/19/07 13:51.
|
|
|
Re: Panzerturm an Wanne ausrichten!
[Re: hahn51]
#130213
05/19/07 13:52
05/19/07 13:52
|
Joined: Jan 2007
Posts: 1,619 Germany
Scorpion
Serious User
|
Serious User
Joined: Jan 2007
Posts: 1,619
Germany
|
wenn du den panzer schräg hast, musst du dasnatürlcih auch noch berücksichtigen. der pan ist ja vom panzer der pan +offset, asl ist das ok... der tilt und roll wert des panzers passen sich ja dem boden an (der normale) ich denke mal das du dass mit vec_to_angle gemacht hast... naja versuch mal den code: ich bin so gar net sicher ob er klappt, aber sollte zumindest theorethisch... Code:
action panzer { var turm; var turm_rotation; turm = ent_create("turm.mdl",my.x,null); while(1) { /*bewege und drehe den panzer hier mit c_trace*/ vec_set(temp,normal); vec_rotate(temp,vector(my.pan,0,0)); vec_to_angle(my.pan,temp); /*position des turmes hier+ verändern von turm_rotation*/ vec_set(temp,normal); vec_rotate(temp,vector(my.pan+turm_rotation,0,0)); you=turm; vec_to_angle(vector(turm_rotation,0,0),temp; /*schießen..animieren...etc...*/ wait(1); } }
ich hoffe es funzt
Last edited by Scorpion; 05/19/07 13:56.
|
|
|
Re: Panzerturm an Wanne ausrichten!
[Re: Scorpion]
#130214
05/19/07 14:16
05/19/07 14:16
|
Joined: Nov 2005
Posts: 174 saarland
hahn51
OP
Member
|
OP
Member
Joined: Nov 2005
Posts: 174
saarland
|
Hallo!
@Scorpion
Das script will irgendwie nicht so richtig der turm steht irgenwo inner luft ,,, habe ich das richtig verstanden das: vec_set(temp,normal); vec_rotate(temp,vector(my.pan,0,0)); vec_to_angle(my.pan,temp); Muss in dir Panzer action? und das : vec_set(temp,normal); vec_rotate(temp,vector(my.pan+turm_rotation,0,0)); you=turm; vec_to_angle(vector(turm_rotation,0,0),temp; in die turm action?
Achso hätte ich evtl noch sagen sollen das der Panzer physikalisch ist?^^
|
|
|
|