|
|
| |
| ZASOBY |
| |
| |
|
|
|
| |
|
| NASZ BUTTON |
|
|
| |
|
|
| |
|
| |
|
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:
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:
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.
|
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".
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 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.
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".
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 im więkrzy odstęp między kołami tym wczośniej pociąg będzie skręcał. Najlepiej wyjaśni to ten obrazek:
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ą:
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 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:
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:
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:
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 )
|
|
|
| |
| 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 |
| |
| [ 2006-02-20 21:44:27 Dodał:
MapMan ]
|
|
|
Ja sie z tego tutoriala nic nowego nie dowiedzialem wiec nie komentuje Ale dobry tutorial ogolnie. Fajnie widziec ze komus przydal sie moj tutek |
| |
| [ 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 |
|
|
|
|
|
| |
|
|
| |
| 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. |
|
| |
|
|
|