Winda z GUI
NecrosiS, Pon, 2005-01-17 10:50 Doom 3 | TutorialeJak stworzyć windę sterowaną GUI ("graficznym interfejsem użytkownika")? Dowiecie się z poniższego artykułu.
Zaczynamy od wstawienia na mapę func_elevator. Jeśli chcemy żeby gracz miał możliwość nie tylko przywołania windy z panelu umieszczonego poza nią, ale także mógł sterować windą przy użyciu GUI umieszczonego w jej środku musimy wybrać odpowiedni model, na przykład "models/mapobjects/com/platguistand/platguistand.lwo". Bezpośrednio po wyborze model może być niewidoczny (niedoróba d3Radianta :P). Żeby zobaczyć naszą windę zapisujemy mapkę i zwyczajnie otwieramy ją ponownie.
Ustawiamy nasz model w odpowiedniej pozycji i zapamiętujemy jego origin (pojawi się we właściwościach obiektu, najlepiej "zapamiętać" przy pomocy "ctrl+c" :]). Będą to dane potrzebne do ustalenia miejsca, w którym winda się zatrzyma (bądź rozpocznie swój ruch). We właściwościach modelu wpisujemy klucz floorPos_1 i nadajemy mu wartość skopiowaną z origin - w ten sposób stworzyliśmy pierwszy punkt kontrolny. Jego wartość to odpowiednie współrzędne x, y i z - wedle naszych potrzeb możemy je sobie dowolnie zmieniać. Musimy pamiętać, że po odpaleniu mapki nasza winda wykona ruch z miejsca, w którym ją "postawiliśmy" do pierwszego punktu kontrolnego – może to wyglądać conajmniej "głupio".
Gdy mamy ustawiony pierwszy punkt trzeba ustalić położenie kolejnego. Dodajemy klucz floorPos_2 i wpisujemy do niego odpowiednio zmienione wartości z pierwszego punktu kontrolnego. Tu posłuże się przykładem: jeśli punkt pierwszy ma wartość "32 32 -0" to aby nasza winda pojechała w górę wystarczy wpisać 32 32 68 - spowoduje to zmianę pozycji obiektu o 68 jednostek względem osi Z.
Winda ma już dwa punkty kontrolne. Teraz musimy "powiadomić" program, że będzie miała nasza winda ma tylko te dwa miejsca docelowe. Dopisujemy do func_elevator klucz floor o wartości 2. Teraz należy wybrać odpowiedni GUI - przy jego pomocy gracz będzie kierował ruchem windy pomiędzy dwoma punktami. Naciskamy na przycisk GUI i z listy wybieramy panel odpowiedni do naszych potrzeb, może to być np. "guis/doors/liftmovewide.gui".
Teraz pora na określenie czasu w jakim winda ma dotrzeć z punktu 1 do punktu 2. W tym celu dodajemy do func_elevator kolejne klucze.
Klucz: move_time Wartość: x.x (czas w sekundach chyba :P)
Klucz: accel_time Wartość: x.x (czas, w którym winda będzie się rozpędzać, np. 0.4)
Klucz: decel_time Wartość: x.x (czas hamowania windy)
Gdy już nasz func_elevator ma wszystkie te dane, pozostaje nam go nazwać i przypisać do niego panele, które pokierują windą z zewnątrz, oraz dołączyć do niego platformę, którą będziemy podróżować (na razie "winda" to tylko model panelu sterującego).
Nazwijmy sobie ten nasz func_elevator "winda": wpisujemy w kluczu name wartość winda. Teraz tworzymy brush, który posłuży za platformę dla gracza. Gotowy brush (albo nawet ich większą ilość) zmieniamy na func_mover. Następnie w jego właściwościach wpisujemy klucz bind o wartości winda - w ten sposób połączyliśmy platformę z modelem panelu sterującego.
Przyszedł czas, żeby dodać pozostałe panele. W tym celu tworzymy func_static i wybieramy mu odpowiedni model (na przykład "models/mapobjects/guiobjects/techdrpanel1/techdrpanel1.lwo") oraz odpowiedni plik GUI (na przykład "guis/doors/liftcall.gui"). Następnie do func_static dodajemy klucz gui_parm1, a jako jego wartość podajemy numer punktu kontrolnego, do którego winda ma zostać przywołana. Teraz trzeba jeszcze tylko dodać klucz target o wartości winda. Potem wystarczy powtórzyć ostatnie kilka kroków, żeby stworzyć panel dla drugiego z punktów konrolnych i gotowe.
Całość powinna wyglądać "mniej więcej" tak:

Podpowiedź: Jeśli zupełnie nie wiesz "o co chodzi" przeczytaj ten poradnik: Podstawy tworzenia map do Dooma 3





Ostatnie odpowiedzi
10 godzin 23 minuty temu
13 godzin 19 minut temu
1 dzień 28 minut temu
1 dzień 11 godzin temu
2 dni 12 godzin temu
2 dni 12 godzin temu
3 dni 6 godzin temu
3 dni 8 godzin temu
3 dni 12 godzin temu
1 tydzień 5 dni temu