Symulator EU07 (i nie tylko) > Symulator

 change_vel-zmiana prędkości AI

(1/1)

Benek:
Pojawił się problem przy pisaniu scenariusza w następującej sytuacji:
Lokomotywa AI startuje ze stacji. Dostaje wyjazd na sygnał S10 (jazda z prędkością 40 km/h, a potem z największą dozwoloną prędkością). Po przejechaniu zwrotnicy AI nie potrafił się rozpędzić, podążał z małą prędkością. Ogólnie czasem zachodzi potrzeba zmiany prędkości w sytuacji, gdy AI nie mija semafora. Z tego względu stworzyłem plik change_vel.inc. Kod przedstawia się następująco:


--- Kod: ---//"Semafor" fizycznie nieistniejący, pozwalający zadać AI różne prędkości.
//Autor: Benek

//Przykładowy wpis ma postać:  include;change_vel.inc;unvissem;;;;;;;end    gdzie unvissem to dowolna nazwa, wpisana przez //usera

// PODSTAWOWE ZDARZENIA:


//odczyt z pamieci (zdarzenie przypisane do toru, z którego chcemy nadać wybraną prędkość):
event (p1)_change_vel getvalues 1.0 (p1)_mem endevent


//ustawienie prędkości, którą chcemy nadać AI
event (p1)_0 updatevalues 1.0 (p1)_mem SetVelocity 0.0 0.0 endevent
event (p1)_20 updatevalues 1.0 (p1)_mem SetVelocity 20 * endevent
event (p1)_30 updatevalues 1.0 (p1)_mem SetVelocity 30 * endevent
event (p1)_40 updatevalues 1.0 (p1)_mem SetVelocity 40 * endevent
event (p1)_50 updatevalues 1.0 (p1)_mem SetVelocity 50 * endevent
event (p1)_60 updatevalues 1.0 (p1)_mem SetVelocity 60 * endevent
event (p1)_70 updatevalues 1.0 (p1)_mem SetVelocity 70 * endevent
event (p1)_80 updatevalues 1.0 (p1)_mem SetVelocity 80 * endevent
event (p1)_90 updatevalues 1.0 (p1)_mem SetVelocity 90 * endevent
event (p1)_100 updatevalues 1.0 (p1)_mem SetVelocity 100 * endevent
event (p1)_120 updatevalues 1.0 (p1)_mem SetVelocity 120 * endevent
event (p1)_140 updatevalues 1.0 (p1)_mem SetVelocity 140 * endevent
event (p1)_160 updatevalues 1.0 (p1)_mem SetVelocity 160 * endevent
event (p1)_max updatevalues 1.0 (p1)_mem SetVelocity -1 * endevent


//memcell do pamietania predkosci:
node -1 0 (p1)_mem memcell 0.0 0.0 0.0 SetVelocity 0.0 0.0 none endmemcell

--- Koniec kodu ---
Jak widać, pozwala on zmienić prędkości AI w dość dużym zakresie i z małym skokiem, aczkolwiek obawiam się, że nie zauważy się różnic między 70 a 80 km/h. Można dostrzec, iż ten "semafor" opisuje tylko 1 parametr: p1. Zaczepiony on jest defualtowo w początku układu współrzędnych. Używa się go identycznie jak semafora. Ba, jak się sprytnie użyje eventów, to wystarczy zaincludować tylko jeden plik change_vel.inc.
Post napisałem, ponieważ niebawem wyjdzie nowa sceneria z załączonym tymże plikiem. Jeśli ktoś pisze scenariusze, to warto by wiedział o jego istnieniu. Również jeżeli ktoś ma jakieś uwagi co do składni, to proszę pisać.
 

Quark-t:
Pytanie - jak "inicjalizujesz" skład? Czasem ignorowanie velocity przy semaforze wynika z "wystartowania" składu z zadaną prędkością początkową. Gdy go uruchomisz np. przez memcelle, to skład może zareagować.

AtapiCl:
Tylko że od zmiany prędkości AI przy wyjeździe na szlak jest wskaźnik W5 i jego event :)

Benek:

--- Cytat: Quark-t w 08 Stycznia 2011, 13:56:06 ---Pytanie - jak "inicjalizujesz" skład? Czasem ignorowanie velocity przy semaforze wynika z "wystartowania" składu z zadaną prędkością początkową. Gdy go uruchomisz np. przez memcelle, to skład może zareagować.

--- Koniec cytatu ---
Skład ma prędkość początkową 0.1, nabiera prędkości poprzez wyzwolenie eventu0/event2. O event0 dla jadącego pojazdu pisał Bohun.

--- Cytat: ZiomalCl w 08 Stycznia 2011, 14:05:32 ---Tylko że od zmiany prędkości AI przy wyjeździe na szlak jest wskaźnik W5 i jego event :)

--- Koniec cytatu ---
Przyjrzę się temu...

   « Dodano: 08 Stycznia 2011, 22:49:47 »Rzeczywiście, sposób ze wskaźnikiem W5 jest równie dobry. Czasem tylko trzeba dopisać do odcinków torów parametr velocity i w ten sposób ograniczyć prędkość AI. Podsumowując, na razie nie będę korzystał z tego inc-a, chociaż idea nie była całkowicie zła. Wątek zamykam.

Nawigacja

[0] Indeks wiadomości

Idź do wersji pełnej
Powered by Advanced Topic Prefix Pro
Powered by SMFPacks Likes Pro Mod