|
7 registered members (3run, miwok, AndrewAMD, Quad, TipmyPip, fairtrader, 1 invisible),
637
guests, and 2
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Puppeteer]
#110674
02/09/07 13:55
02/09/07 13:55
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Hi, du kannst dir den Script ja mal anschauen wie ich es jetzt gemacht habe. Wahrscheinlich habe ich deine Idee eh nicht so umgesetzt wie du es vorgeschlagen hast. Aber schau einfach mal drüber. Code:
var Sensor_links; var Sensor_rechts; var Sensor_mitte; var Sensor_links_Distanz; var Sensor_rechts_Distanz; var Sensor_Distanz_Sollwert;
var Zug_Geschwindigkeit = 0; var Zug_Drehgeschwindigkeit_links = 0; var Zug_Drehgeschwindigkeit_rechts = 0;
action SensorLinks { while(1) { Sensor_links_Distanz = c_trace(Sensor_links.x, Sensor_mitte.x, IGNORE_ME); my.x = Sensor_links.x; my.y = Sensor_links.y; my.z = Sensor_links.z; wait(1); } }
action SensorRechts { while(1) { Sensor_rechts_Distanz = c_trace(Sensor_rechts.x, Sensor_mitte.x, IGNORE_ME); my.x = Sensor_rechts.x; my.y = Sensor_rechts.y; my.z = Sensor_rechts.z; wait(1); } }
action SensorMitte { while(1) { Sensor_Distanz_Sollwert = ((Sensor_links_Distanz + Sensor_rechts_Distanz) / 2); my.x = Sensor_mitte.x; my.y = Sensor_mitte.y; my.z = Sensor_mitte.z; wait(1); } }
action Triebfahrzeug { while(1) { // Kamera positionieren // -------------------- vec_set(camera.pos, my.pos); camera.pan = my.pan; // Sensor links // ------------ Sensor_links.x = my.x + 200 * cos(my.pan) - 50 * sin(my.pan); Sensor_links.y = my.y + 200 * sin(my.pan) + 50 * cos(my.pan); Sensor_links.z = my.z - 60; // Sensor rechts // ------------- Sensor_rechts.x = my.x + 200 * cos(my.pan) + 50 * sin(my.pan); Sensor_rechts.y = my.y + 200 * sin(my.pan) - 50 * cos(my.pan); Sensor_rechts.z = my.z - 60; // Sensor mitte // ------------ Sensor_mitte.x = my.x + 200 * cos(my.pan); Sensor_mitte.y = my.y + 200 * sin(my.pan); Sensor_mitte.z = my.z - 60; // Position nach rechts anpassen // ----------------------------- IF(Sensor_links_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit_links < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit_links += 0.1 * time; } my.pan -= Zug_Drehgeschwindigkeit_links * time; } // Position nach links anpassen // ---------------------------- IF(Sensor_rechts_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit_rechts < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit_rechts += 0.1 * time; } my.pan += Zug_Drehgeschwindigkeit_rechts * time; } // Gas, Bremse, ausschalten // ------------------------ IF(key_w == on) { Zug_Geschwindigkeit.x += 1 * time; } IF(key_s == on) { Zug_Geschwindigkeit.x -= 1 * time; } IF(key_x == on) { Zug_Geschwindigkeit.x = 0; Zug_Geschwindigkeit.y = 0; }
// Y Position anpassen // ------------------- IF(key_a == on) { Zug_Geschwindigkeit.y = 0.2 * time; } IF(key_d == on) { Zug_Geschwindigkeit.y = -0.2 * time; } // Bewegungen umsetzen // ------------------- c_move(my, Zug_Geschwindigkeit, nullvector, GLIDE); wait(1); } }
Die Action "SensorLinks", "SensorRechts" und "SensorMitte" sind nur dazu da, dass ich mir die Punkte durch ein Modell darstellen lassen kann. 
Last edited by Alexander; 02/09/07 13:58.
Gruß Alex =)
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Alexander]
#110675
02/09/07 17:45
02/09/07 17:45
|
Joined: Jan 2007
Posts: 2,247 Deutsch Niedersachsen
Puppeteer
Expert
|
Expert
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
|
Funktioniert es denn? Habe es nicht ausprobiert, ich glaube aber dass du sensor mitte Falsch gemacht hast. Auch würde ich keine Actions benutzen sondern dass direkt in die Zugfunktion machen, da es sonst passieren kann dass sensor mitte mit alten werten arbeitet  Omega
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Puppeteer]
#110676
02/09/07 20:10
02/09/07 20:10
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Also das funktioniert durchaus.  Das mit SensorMitte ist richtig (funktioniert zumindest  ), mit den Actions hast du recht, die habe ich nur erstellt, um Modellen die Koordinaten der Sensoren zuzuweisen, damit ich die am Anfang richtig einstellen konnte. Es gibt allerdings noch 2 Sachen die mich stören. 1. Wenn die Drehung aufhört, stoppt es zu abrupt, das muss ich noch lösen. 2. Wenn "Zug_Geschwindigkeit.x" > 25 ist, funktioniert der Script nicht mehr. Trace wird zurück auf 0 gesetzt und es geht einfach nicht mehr. 
Gruß Alex =)
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Puppeteer]
#110678
02/10/07 11:49
02/10/07 11:49
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Hi, mit 2. könntest du recht haben, das werde ich, sobald ich wieder zuhause bin, einmal ausprobieren (also morgen Abend).  Alles in eine Action hinein zu packen ist kein Problem. Die Kurven an sich funktionieren, wie gesagt, wenn die Drehung zu Ende ist, bleibt er zu abrupt stehen. Da muss ich die Geschwindigkeit beim Drehen noch langsam reduzieren, das bekomme ich aber auch noch hin.  Wieso Key A und D? Das war nur zum testen, damit ich die Position per Hand anpassen konnte.
Gruß Alex =)
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Alexander]
#110679
02/10/07 13:52
02/10/07 13:52
|
Joined: Jan 2007
Posts: 2,247 Deutsch Niedersachsen
Puppeteer
Expert
|
Expert
Joined: Jan 2007
Posts: 2,247
Deutsch Niedersachsen
|
Ahhh... Ist aber komisch dass er stehn bleibt... Sollte ja eigentlich nichts an den speed werten verändern.... Ahhh ich weiß warum! Du musst die Schienen passable machen! das wird helfen! Und natürlich ignore passable beim trace wegnehmen  Omega
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Puppeteer]
#110680
02/10/07 14:32
02/10/07 14:32
|
Joined: Jun 2005
Posts: 152 Weiterstadt, Germany
Alexander
OP
Member
|
OP
Member
Joined: Jun 2005
Posts: 152
Weiterstadt, Germany
|
Ich glaube du hast mich falsch verstanden.  Der Zug bleibt nicht stehen, sondern wenn die Drehung vollendet ist (sprich der Zug richtig ausgerichtet wurde), wird ja "Zug_Drehgeschwindigkeit_rechts" bzw. "Zug_Drehgeschwindigkeit_links" direkt auf 0 gesetzt. Das muss ich noch "sanfter" machen. Wenn das Problem 2 von oben auch noch gelöst ist, dann steht das meiste ja. Dann geht es weiter an die Weichen und an die Wagen. 
Gruß Alex =)
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Alexander]
#110681
02/10/07 15:23
02/10/07 15:23
|
Joined: Jun 2006
Posts: 2,640 Earth
Germanunkol
Expert
|
Expert
Joined: Jun 2006
Posts: 2,640
Earth
|
Tipp: benutze statt drehgeschwindigkeit_rechts und links nur einz. Wenn du davon abziehst wird es pan kleiner, ansonsten größer: Code:
IF(Sensor_links_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit_links < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit_links += 0.1 * time; } my.pan -= Zug_Drehgeschwindigkeit_links * time; } // Position nach links anpassen // ---------------------------- IF(Sensor_rechts_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit_rechts < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit_rechts += 0.1 * time; } my.pan += Zug_Drehgeschwindigkeit_rechts * time; }
sollte ersetzt werden können durch: Code:
IF(Sensor_links_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit += 0.1 * time; } } // Position nach links anpassen // ---------------------------- IF(Sensor_rechts_Distanz > Sensor_Distanz_Sollwert + 1) { IF(Zug_Drehgeschwindigkeit < (Zug_Geschwindigkeit / 4)) { Zug_Drehgeschwindigkeit += 0.1 * time; } } my.pan += Zug_Drehgeschwindigkeit * time;
so sollte es einfacher sein die drehung langsamer zu stoppen... geht das? Bringt das irgendwas?? Micha
~"I never let school interfere with my education"~ -Mark Twain
|
|
|
Re: Ideen wie man einen Zug auf Schienen halten ka
[Re: Puppeteer]
#110683
02/10/07 18:16
02/10/07 18:16
|
Joined: Jun 2006
Posts: 2,640 Earth
Germanunkol
Expert
|
Expert
Joined: Jun 2006
Posts: 2,640
Earth
|
Hmm... ist das nicht das gleiche, in diesem fall?
Gut, ich denke ich verstehe was du meinst. Aber wenn er immer perfeckt auf den schienen sitzen sollte, wieso stoppt dann die drehung so aprupt? ist das vielleicht weil die schinen aprupt den winkel wechseln?
Micha
~"I never let school interfere with my education"~ -Mark Twain
|
|
|
|