Source Modification Centre - LOGO
Gość: ( Logowanie | Rejestracja )

 
MENU
 
ZASOBY
 
 
LEGENDA
 
REKLAMA
Fotograf ślubny gorzów


Fotograf szkolny

Encyklopedia wiedzy o sadze gier Half-Life

NASZ BUTTON
SMC
 
NA FORUM
 
 
TUTORIALE - MAPPING [ Dodaj ]
Pociągi
[ 2006-02-16 14:57:42  Dodał:  TeWu   Wyświetleń: 3210   Komentarzy: 4  ]
Pociągi

W tym tutorialu pokażę jak zrobić 2 typy pociągów w HL2/CSS.
Pierwszy typ to pociąg którym można sterować, przyśpieszać zwalniać, oraz cofać, wszystko robi się naciskając klawisz E a potem W i S (jeżeli grasz na standardowej konfiguracji).
Drugi typ to pociąg do którego wsiadamy, pociąg odjeżdża, a gdy przyjedzie na następną stacje zatrzymuję się, gdy znów wsiądziemy znowu jedzie, zatrzymuje się i tak w kółko.

Pociąg kontrolowany przez player'a

A więc tworzenie pociągu zaczynamy od stworzenia toru z brył, mi udało się stworzyć coś takiego:

Source Modification Centre


Pociąg nie będzie wiedział że ma jeździć po tych torach z brył, trzeba stworzyć osobny tor który nie będzie widoczny w grze, a będzie mówił pociągowi gdzie ma jechać, taki tor tworzy się z bytów path_track. Pociąg będzie jeździł od pierwszego path_track'a do drugiego potem do trzeciego i do czwratego itd.
Tak wydają moje path_tracki:

Source Modification Centre


Lecz zanim stworzysz swoje path_tracki musisz najpierw stworzyć pierwszego i pozmieniać mu jego ustawienia.
A więc wyjaśniam ustawienia path_tracka:

Name - Nazwa

Next stop target - Nazwa path_tracka do którego skieruje się pociąg po dotarciu do tego

Branch Path - Jest to nazwa alternatywnego path_tracka do którego pojedzie pociąg. By pociąg wybrał alternatywną drogę na path_track który stoi na rozstaju dróg (Czyli ma ustawiony Branch path) musi zadziałać odpowiedni Output. Jak wykorzystać tą opcje szczegółowiej zostanie opisane w następnej części tego tutoriala

New Train Speed - można tu ustawić z jaką prędkością ma jechać pociąg po dotarciu do tego path_track'a. Jeżeli zostanie ustawione na 0 pociąg zachowa swoją dotychczasową prędkość.

Path Radius - Path_track nie służy tylko do mówienia pociągowi gdzie ma jechać, wytycza on też trasy dla np. NPC'ów. I ta opcja będzie najczęściej wykorzystywana przy okazji wyznaczania trasy dla NPC'ów. Można tu ustawić z jaką dokładnością coś co porusza się po path_track'ach musi "trafić" w path_track'a. Czyli jeżeli NPC biegnie po path_track'ach, to by nie biegł jak po nitce(co wygląda nie naturalnie) można tu ustawić jak bardzo może zboczyć z trasy
EDIT:: Do NPC'ów używa się bytów path_corner, ale zostawiłem powyższy opis Path Radious bo ładnie opisuje do czego służy to opcja.

Orientation Type - Tutaj ustawia się, w którą stronę ma być skierowany obiekt poruszający się po path_track'ach (np. nasz pociąg). Dostępne opcje to:
  No Change - obiekt nie zmieni kierunku, zawszę będzie skierowany w tą samą stronę (czyli tak jak wstawiłeś go na mape w Hammerze)
  Face direction of motion - Obiekt będzie skierowany w stronę w którą się porusza
  Face this path_track's angles - Jeżeli ustawisz tą opcje obiekt będzie skierowany w tą strone w którą skierowany jest path_track. Każdy path_track ma "przód" i "tył". Gdzie jest przód path_tracka?? By to zobaczyć trzeba spojrzeć na widok 2D i zaznaczyć path_track'a. Pokazała się kreska która wskazuje przód Path_tracka.

Source Modification Centre



Nas jednak interesuje tylko opcja Name, ustawiamy tu jakąś nazwę która będzie pasowała np. "tor" albo "trasa".
Kiedy już ustawiliśmy nazwę czas stworzyć całą resztę path_tracków. Jednak normalnie tworzymy tylko pierwszego path_tracka, reszta powstaje poprzez kopiowanie tego pierwszego. path_track jest specyficznym bytem, gdyż po skopiowaniu, kopia nie nosi tej samej nazwy co oryginał lecz zostaje dodana numeracja, czyli np. kopiując path_track o nazwie "tor" uzyskujemy path_track o nazwę "tor1" kopiując path_track o nazwie "tor1" uzyskujemy path_track o nazwie "tor2" kopiując "tor2" jeden uzyskujemy "tor3" itd.
Jednak automatyczna zmiana nazwy nie jest jedyną specyficzną właściwością path_tracków, po skopiowaniu path_tracka o nazwie "tor" w jego ustawieniach w polu Next stop target ustawia się nazwa kopii, czyli "tor1". Kopia dziedziczy też wszystkie ustawienia i flagi.
Dzięki tym specyficznym właściwością path_track'a bardzo szybko można stworzyć trasę którą poruszać się ma pociąg.
Jedyną rzeczą którą trzeba zrobić ręcznie to połączyć ostatniego path_tracka z pierwszym (jeżeli chcemy by tak jak w moim przykładzie pociąg jeździł w kółko)
Tworząc trase widzimy też, że pomiędzy path_trackami pojawiają się cienkie linie, linia od path_tracka o nazwie "tor" do path_tracka o nazwie "tor1" oznacza, że w ustawieniach path_tracka o nazwie "tor" w polu Next stop target musi być napisane "tor1" lub w ustawieniach path_track'a "tor1" w tem samym polu musi być wpisane "tor".

Source Modification Centre


Dzięki tym linią dużo łatwiej jest się zoriętować jak przebiega trasa, szczególnie, kiedy np. stworzy parę tras które się przecinają, albo biegną obok siebie.
Po stworzeniu trasy możesz być z siebie dumny Emot Nie martw się jeżeli nie zrozumiałeś jak działają path_tracki, tylko przeczytaj text jeszcze raz, gdy już złapiesz o co w tym chodzi, zobaczysz, że to nie dość, że nie jest to skomplikowane to jeszcze daje duże możliwości.

Czas teraz na stworzenie zajazdów. Tworzenie zajazdów raz się udaje a raz nie, i po prostu wszystko zależy od szczęścia :/ (jeżeli ci się nie uda za pierwszym razem usuń wszystko i zrób jeszcze raz) więc radzę unikać ich robienia. Mimo wszystko pokaże jak zajazdy zrobić, ponieważ czasem przydają się.
A więc zajazd ma działać tak, że pociąg ma normalnie do przodu jeździć w kółko, ale gdy zacznie cofać i dotrze do zajazdu to do niego zajeżdża.

Source Modification Centre


Robi się to banalnie prosto. Najpierw tworzymy path_track i nazywamy np. "zajazdA". Po czym tworzymy kopie tego path tracka i umieszczamy w drugim końcu zajazdu
Teraz nadszedł czas by połączyć zajazd z trasą, a więc otwieramy ustawienia path_tracka "zajazdA1" (kopii) i w polu Next stop target wpisujemy nazwę path_tracka do którego chcemy podłączyć zajazd, w moim przypadku jest to "tor16".

Source Modification Centre


Jeżeli jest więcej zajazdów każdy następny tworzymy tak samo.

Ale gdzie pociąg??

No właśnie, trasa gotowa, czas na pociąg.
Pociąg tworzymy z brył potem bryły grupujemy i zamieniamy na byt func_tracktrain.
Jak można się domyśleć czas na zmianę ustawień naszego pociągu, tak więc oto opis ustawień func_tracktrain:

Name - Nazwa

First Stop Target - Bardzo ważne. w tym polu wpisuje się nazwę
path_tracka nad którym pojawi się pociąg. Oznacza to, że pociąg w Hammerze może być umieszczony gdziekolwiek bo i tak po załadowaniu mapy zostanie przeteleportowany nad path_tracka którego nazwę wpiszesz w tym polu.

Max speed - Prędkość z jaką będzie jechał pociąg.
Inital Speed - Prędkość początkowa, czyli prętkość tuż po załadowaniu się mapy.

Change Velocity - To pole musi być ustawione na Instantaneously, w przeciwnym wypadku pociąg straci zdolność do cofania.

Distance Between the Wheels - Czyli dystans między kołami, zrobienie kół widocznych w grze to już osobna rzecz, w tym polu chodzi o takie niewidoczne koła Emot im więkrzy odstęp między kołami tym wczośniej pociąg będzie skręcał. Najlepiej wyjaśni to ten obrazek:

Source Modification Centre



Height above track - W tym polu ustawiamy jak wysoko nad path_track'ami ma poruszać się pociąg

Bank Angle on tuns - W tym polu ustawia się jak bardzo kołysać na boki ma się pociąg podczas skręcania. Dla pociągu to pole jest nie przydatne i warto ustawić na 0, ale gdyby ktoś robił np. samolot/helikopter to pole może się przydać


Move Sound - Dźwięk jaki będzie emitował pociąg podczas poruszania się (np. "freighttrain_move1")

Start Sound - Dźwięk jaki wyda pociąg gdy przejmiemy nad nim kontrol(np. "plats/train_use1.wav")

Stop Sound - Dźwięk jaki wyda pociąg po zatrzymaniu się (np. "plats/ttrain_brake1.wav")

Volume - Głośność dźwięków wydawanych przez pociąg


W przypadku naszego pociągu należy stawić pola:
Name
First Stop Target
Max speed
Change Velocity
Height above track


Czas jeszcze ustawić flagi a więc powinieneś zaznaczyć flagi:
[x] HL1 Train - Jeżeli nie zaznaczysz tej opcji pociąg będzie się czasem dziwnie zachowywał.
[x] Is unblockable by player - Sprawia, że player nie będzie mógł zablokować pociągu, jeżeli tego nie zaznaczysz to, gdy w pociągu będzie player pociąg będzie się blokował na zakrętach.

Mamy już Pociąg, trasę po której będzie się poruszał, oraz tory które będą widoczne w grze, czas na ostatni element czyli sterowanie pociągiem.
Prawdę mówiąc gdyby teraz odpalić mape to po wejściu do pociągu można by go kontrolować, ale porządniej jest gdy określimy z jakiego miejsca można kontrolować pociąg.

Robi się to tworząc bryłę po czym nadając całej bryle texture "tools/toolstrigger" i zamieniając na byt func_traincontrols.
Właśnie ten byt odpowiada za kontrole pociągu. Jeżeli chcemy by z każdego miejsca w pociągu można było go kontrolować, to robimy tak by byt func_traincontrols pokrywał całą powierzchnie wewnątrz pociągu.
Można też zrobić w pociągu jakąś konsole np taką:

Source Modification Centre


i byt func_traincontrols umieścić przed konsolą, tak by pociąg można było kontrolować tylko jak się podejdzie do konsoli.

No i to wszystko jeżeli chodzi o pociąg kontrolowany przez player'a.

Pociąg kontrolowany outputami

Jeżeli umiesz już stworzyć pociąg pociąg kontrolowany przez player'a to stworzenie pociągu kontrolowanego outputami to drobnostka Emot Jeżeli nie umiesz to przeczytaj  powyższy tutorial gdyż będę tego wymagał w tej częśći.

Tworzenie pociągu kontrolowanego output'ami rozpoczynamy tak samo jak kontrolowanego przez playera czyli:
1. Tworzymy tor z brył
2. Tworzymy trasę z path_tracków (należy stworzyć osobną trasę dla tego pociągu, dlaczego napiszę w dalszej części tutka)
3. Tworzymy pociąg

No i po zrobieniu tych punktów powinien nam wyjść prawie taki sam pociąg jak w pierwszej części tutka. Prawie, bo nie zrobiliśmy nie potrzebnego dla pociągu kontrolowanego outputami bytu func_traincontrols.

Przystąpmy więc do zmieniania tego pociągu w pociąg kontrolowany outputami. Po 1 zaznaczamy pociąg (byt func_tracktrain) i zaznaczamy flagę
[x] No User Control - ta opcja odbierze playerowi możliwość kontrolowania pociągu, więc zostanie kontrola przez outputy.

Po 2 zmieniamy nazwę pociągu na "pociag2".

Teraz pociągu nie będzie się dało kontrolować poprzez naciśnięie E, więc nalerzy zrobić w pociągu trigger'a i dodać do niego takiego output'a:

My outputs named: OnTrigger
Target entities named: pociag2
Via this input: StartForward
With a parameter override of: none
After a delay in seconds of: 0.00


Teraz po wejściu w trigger'a pociąg ruszy  i będzie jeździł w kółko.
Jak zrobić by zatrzymał się na następnej stacji?

Zaznaczamy path_track'a na którym ma się zatrzymać pociąg:

Source Modification Centre


Po czym dodajemy do niego output:

My outputs named: OnPass
Target entities named: pociag2
Via this input: Stop
With a parameter override of: none
After a delay in seconds of: 0.00


Teraz, gdy pociąg wiedzie na output pociąg się zatrzyma.

Gdy się teraz zastanowisz wpadniesz na to dlaczego trzeba było stworzyć dla tego pociągu osobną trase z path_tracków.
A to dlatego, że gdyby pociągi jeździły po jednej trasie i pociąg kontrolowany przez player'a wjechał by na path tracka przy stacji ten odpalił by swojego outputa i zatrzymał pociąg kontrolowany outputami. A to z pewnością nie jest dobre.


Po tym gdy pociąg zatrzyma się na stacji ponownie można wejść w trigger'a i wtedy znowu ruszy. W ten sam sposób można stworzyć więcej stacji.
I jest już coraz lepiej, ostatnią rzeczą, którą trzeba zrobić jest zrobienie by pociąg zajeżdzał do zajazdu. Przydaje się to raczej żako, ale opisze jak zrobić coś takiego.
Jest to już trochę bardziej skomplikowana sytuacja, i trzeba użyć bytu math_counter. A więc tworzymy ten byt i umieszczamy nie daleko zajazdu, do którego ma zajeżdżać pociąg:

Source Modification Centre


Teraz ustawiamy opcje math_counter'a następująco:

Name - zajazdB_licznik
Inital Value - 0
Minimum Legal Value - 0
Maximum Legal Value - 2

i dodajemy outputy:

My outputs named: OnHitMax
Target entities named: pociag2
Via this input: Stop
With a parameter override of: none
After a delay in seconds of: 0.00


My outputs named: OnHitMax
Target entities named: pociag2
Via this input: StartBackward
With a parameter override of: none
After a delay in seconds of: 1.00


My outputs named: OnHitMax
Target entities named: zajazdB_licznik
Via this input: SetValue
With a parameter override of: 0
After a delay in seconds of: 1.01


Gdy mamy już odpowiednio ustawionego math_counter'a musimy zaznaczyć path_track'a następnego (w kierunku jazdy pociągu) po tym do którego jest dołączony zajazd:

Source Modification Centre


I dodać do niego output:

My outputs named: OnPass
Target entities named: zajazdB_licznik
Via this input: Add
With a parameter override of: 1
After a delay in seconds of: 0.00


Teraz pociąg będzie zajeżdżał do zajazdu. Już tłumacze dlaczego. Mianowicie pociąg wyjeżdża z zajazdu przejeżdża przez path_tracka który wysyła do math_counter'a żądanie by dodał jeden. Potem pociąg po zrobieniu kółka znowu przejeżdża przez tego path_tracka counter znowu dodaje jeden, czyli ma już dwa, a dwa to maxymalna wartość dla tego counter'a więc odpala swoje outputy które po kolei: stopują pociąg, sprawiają, że zaczyna cofać i resetują licznik.

Teraz oba pociągi jeżdżą jak powinny, więc to już koniec tutoriala. Na koniec napiszę jeszcze, że byt func_tracktrain nie musi być wykorzystywany do robienia pociągów, ma on wiele zastosować, można np coś do niego przyparentować i sprawić by się ruszało po path_trackach.

DOŁĄCZONE PLIKI:
SMC_POCIAGI.ZIP ( 29 KB )


Autor: TeWu
Komentarze ( 4 ) / Dodaj komentarz
 
KOMENTARZE  
[ 2006-02-20 19:22:45  Dodał:  TeWu  ]
 
50 odsłon i 0 komentarzy. piszcie czy działa czy nie. może coś nie zrozumiałe Emot
 
[ 2006-02-20 21:44:27  Dodał:  MapMan  ]
 
Ja sie z tego tutoriala nic nowego nie dowiedzialem wiec nie komentuje Emot Ale dobry tutorial ogolnie. Fajnie widziec ze komus przydal sie moj tutek Emot
 
[ 2007-05-19 00:08:45  Dodał:  sobieh  ]
 
Załącznik nie działa ... Pokazuje : 403 Zabronione
 
[ 2008-02-04 08:03:20  Dodał:  TeWu  ]
 
Już poprawione
 
INFO
 
NAJNOWSZE
 
SHOUTBOX
Tracha: Ach, ta czerń w NH2 jest wyprana w Perwolu Black Magic! :3
Tracha: Ale to takie fajne ostrzeliwać tych talibów! :3
Dabu: Przecież ten Black Ops to trzeci raz dokładnie to samo. :O Jeszcze się nie znudziły map packi sprzedawane w cenie gry?
pietrekder: Jeśli nie da się grać talibem i rozpierdzielać zasranych amerykańców to gra do dupy :]
Hooch: Oglądać o 3 w nocy Link
NaVarion: Pills here!
Tracha: Lizard, use the plaster!
MoonBlaze: interesting
Lizard: Wieszak mi na głowę spadł ;/
Tracha: Szkoda, starcze.
 
ANKIETA

[ Czas generowania strony: 0.150 secs. ]

Copyright (c) 2002-2005 by Mefi & .raven
Wszelkie prawa zastrzeżone

Fotograf studniówka
Car-audio
Odtwarzacze samochodowe, Głośniki …
www.pecet24.pl
Dallas hotels

www.triptake.com
pióra Waterman
pióra Waterman, przybory piszące W…
www.e-wanda.pl
POBIERZ
POBIERZ, POBIERZ
www.programy1.pl
modding
WebElite.pl, Forum Komputerowe
www.webelite.pl
serwery gier multiplayer



38.107.191.9538.107.191.95