pankracy Opublikowano 11 Czerwca 2021 Udostępnij Opublikowano 11 Czerwca 2021 Cześć wszystkim. Mam w grze trampoline która ma ustawiony kąt 45 stopni.W ten sposób uzyskuje do przodu odbicie po łuku. Kod działa! ale chciałbym uzyskać taki efekt Opis: Od trampoliny gracz może się odbic tylko w chwili kiedy odtwarzana będzie animacja trampoliny.Jak animacja nie będzie odtwarzana to gracz nie będzie mógł się od niej odbić.Można by było trochę skok paraboliczny zwolić np ustawić odpowiednio grawitacje aby troche wolniej leciał gracz jak się odbije. Czyli np co 5 sekund jest odtwarzana animacja i gracz wtedy może się odbić. I druga sprawa dźwièk trampoliny powinien odtwarzać się w chwili wyswietlania animacji oraz na bliskim dystanie od gracza. Sprawę z wyswietlaniem animacji można rozwiązac używając zapewne zdarzenia Alarm ale dalej nie mam pomysłu na resztę. Bardzo dziękuję z góry wszystkim za pomoc. Kod parabolicznej trampoliny wyglada tak: Bardzo przepraszam za format ale odpisuje z telefonu. Obj_trampolina Create image_speed = 0; pwr = 152; Step if place_meeting(x,y,par_entity) { with instance_place(x,y,par_entity) { hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Animation end image_index = 0; image_speed = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 Czy ktoś z was rozwiązywał podobne zagadnienie lub jest wstanie mi pomóc? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 13 Czerwca 2021 Udostępnij Opublikowano 13 Czerwca 2021 W dniu 11.06.2021 o 06:22, pankracy napisał: Od trampoliny gracz może się odbic tylko w chwili kiedy odtwarzana będzie animacja trampoliny.Jak animacja nie będzie odtwarzana to gracz nie będzie mógł się od niej odbić.Można by było trochę skok paraboliczny zwolić np ustawić odpowiednio grawitacje aby troche wolniej leciał gracz jak się odbije. Czyli np co 5 sekund jest odtwarzana animacja i gracz wtedy może się odbić. Zachowuj stan trampoliny w zmiennej, np. jakąś flagę i steruj nią podczas animacji w zdarzeniach Animation Start oraz Animation End. W kodzie odbicia przed place_meeting sprawdzaj, czy flaga jest True i tyle. W dniu 11.06.2021 o 06:22, pankracy napisał: I druga sprawa dźwièk trampoliny powinien odtwarzać się w chwili wyswietlania animacji oraz na bliskim dystanie od gracza. Sprawę z wyswietlaniem animacji można rozwiązac używając zapewne zdarzenia Alarm ale dalej nie mam pomysłu na resztę. Możesz odpalić dźwięk w zdarzeniu Animation Start. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 3 godziny temu, Konrad-GM napisał: Zachowuj stan trampoliny w zmiennej, np. jakąś flagę i steruj nią podczas animacji w zdarzeniach Animation Start oraz Animation End. W kodzie odbicia przed place_meeting sprawdzaj, czy flaga jest True i tyle. Możesz odpalić dźwięk w zdarzeniu Animation Start. Czyli przenieść cały kod ze zdarzenia Step do Animation Start a w zdarzeniu create dodać zmienną np start = false następnie tą zmienną start = true ustawić w zdarzeniu Animation Start. Animation End ustawić zmienną start na false. Probuje sobie to wyobrazić A jak np troche spowolnić odbicie gracza? Powinienem zmniejszyć grawitacje? W obiekcie dziedziczacym par_entity mam tam zmienne dla bohatera i obiektóww grze np grawitacje mam ustawioną na wartość 1. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 13 Czerwca 2021 Udostępnij Opublikowano 13 Czerwca 2021 12 minut temu, pankracy napisał: Czyli przenieść cały kod ze zdarzenia Step do Animation Start a w zdarzeniu create dodać zmienną np start = false następnie tą zmienną start = true ustawić w zdarzeniu Animation Start. Animation End ustawić zmienną start na false. Kod w Step obj_trampolina zostaw, dodaj flagę `start` w Create trampoliny, ustaw ją na `true` w zdarzeniu Animation Start a `false` po zakończeniu animacji (w zdarzeniu Animation End). Dodatkowo kod w Step wzbogać o sprawdzanie flagi start np. dodając na początku `if (start == false) return;`. 7 minut temu, pankracy napisał: A jak np troche spowolnić odbicie gracza? Powinienem zmniejszyć grawitacje? Jeżeli ma wolniej opadać, to tak, pozostaje modyfikacja grawitacji. Możesz też np. zresetować grawitację (z np. 0.5 do 1.0) po dotknięciu podłoża. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 2 godziny temu, Konrad-GM napisał: Kod w Step obj_trampolina zostaw, dodaj flagę `start` w Create trampoliny, ustaw ją na `true` w zdarzeniu Animation Start a `false` po zakończeniu animacji (w zdarzeniu Animation End). Dodatkowo kod w Step wzbogać o sprawdzanie flagi start np. dodając na początku `if (start == false) return;`. Jeżeli ma wolniej opadać, to tak, pozostaje modyfikacja grawitacji. Możesz też np. zresetować grawitację (z np. 0.5 do 1.0) po dotknięciu podłoża. Obj_trampolina Create image_speed = 0; start = true; pwr = 152; Step if (start == false) return 0;// jaka powinna być tu wartość? if place_meeting(x,y,par_entity) { with instance_place(x,y,par_entity) { hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Animation start start = true; Animation end start = false; image_index = 0; image_speed = 0; Pisze z telefonu. Teraz grawitacje musiałbym ustawić w zdarzeniu step? I dodać warunek przy place_meeting że jak odbije się gracz to grawitacja zwolni na 0.5 a jak dotknie podłoża zresetuje się do wartości początkowej 1. Nie używałem funkcji return tam powinna być wartość 0?? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 Dobra teraz widzę,że nie mam eventu Animation Start.jest tylko Animation End,update,event Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 13 Czerwca 2021 Udostępnij Opublikowano 13 Czerwca 2021 6 minut temu, pankracy napisał: Dobra teraz widzę,że nie mam eventu Animation Start.jest tylko Animation End,update,event Przejrzałem dokumentację i faktycznie nie ma tego zdarzenia, to musisz w takim razie ustawiać flagę w miejscu, gdzie uruchamiasz animację. Godzinę temu, pankracy napisał: Teraz grawitacje musiałbym ustawić w zdarzeniu step? I dodać warunek przy place_meeting że jak odbije się gracz to grawitacja zwolni na 0.5 a jak dotknie podłoża zresetuje się do wartości początkowej 1. To już zależy jak będzie działać w tym wypadku, w if z place_meeting możesz ustawiać grawitację i resetować ją w kodzie Step par_entity jak "stoi" na ziemii. 1 godzinę temu, pankracy napisał: Nie używałem funkcji return tam powinna być wartość 0?? return nie musi przyjmować wartości, w tym wypadku przerwie całe zdarzenie Step. Jeżeli masz więcej bloków ze skryptami, to możesz użyć break, to powinno przerwać pojedynczy blok. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 58 minut temu, Konrad-GM napisał: Przejrzałem dokumentację i faktycznie nie ma tego zdarzenia, to musisz w takim razie ustawiać flagę w miejscu, gdzie uruchamiasz animację. To już zależy jak będzie działać w tym wypadku, w if z place_meeting możesz ustawiać grawitację i resetować ją w kodzie Step par_entity jak "stoi" na ziemii. return nie musi przyjmować wartości, w tym wypadku przerwie całe zdarzenie Step. Jeżeli masz więcej bloków ze skryptami, to możesz użyć break, to powinno przerwać pojedynczy blok. Jak nie dam żadnej wartości w return to wyrzuci błąd. Stąd moje pytanie odnośnie dodania wartości. Ok mogę dodać na koniec warunku break; Chociaż nie wiem czy to nie powinno być używane ze switch; Teraz tak: Mój kod jest tak skonstruowany że animacja uruchamia się dopiero z zetknięciem gracza z trampoliną a kończy się w zdarzeniu Animation End. Kurcze nie mam pomysłu na to. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 13 Czerwca 2021 Autor Udostępnij Opublikowano 13 Czerwca 2021 4 godziny temu, Konrad-GM napisał: Przejrzałem dokumentację i faktycznie nie ma tego zdarzenia, to musisz w takim razie ustawiać flagę w miejscu, gdzie uruchamiasz animację. To już zależy jak będzie działać w tym wypadku, w if z place_meeting możesz ustawiać grawitację i resetować ją w kodzie Step par_entity jak "stoi" na ziemii. return nie musi przyjmować wartości, w tym wypadku przerwie całe zdarzenie Step. Jeżeli masz więcej bloków ze skryptami, to możesz użyć break, to powinno przerwać pojedynczy blok. A dałbyś radę pomóc mi to w całość złożyć? Bo chodzi o to przypomne że gracz powinien mieć możliwość odbicia się od trampoliny dopiero jak animacja trampoliny się pokaże. I ta animacja powinna np co 5 sekund się pokazywać potem stan spoczynku i wtedy nie może się gracz odbić i po 5 sekundach animacja się wyswietli to wtedy może się odbić od trampoliny. Grawitacja wtedy powinna zwolnić o połowę a jak wyladuje to wrócić do pierwotnego stanu. Dźwięk trampoliny powinien być odtwarzany w chwili wyświetlania animacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Czerwca 2021 Administratorzy Udostępnij Opublikowano 14 Czerwca 2021 W GMS2 sprite może mieć eventy na konkretne klatki, tak swoją drogą, może to pomoże ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 14 Czerwca 2021 Autor Udostępnij Opublikowano 14 Czerwca 2021 48 minut temu, gnysek napisał: W GMS2 sprite może mieć eventy na konkretne klatki, tak swoją drogą, może to pomoże ? Tylko że ja używam starszej wersji gms 1.4 gnysek 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Czerwca 2021 Udostępnij Opublikowano 14 Czerwca 2021 19 godzin temu, pankracy napisał: Bo chodzi o to przypomne że gracz powinien mieć możliwość odbicia się od trampoliny dopiero jak animacja trampoliny się pokaże. I ta animacja powinna np co 5 sekund się pokazywać potem stan spoczynku i wtedy nie może się gracz odbić i po 5 sekundach animacja się wyswietli to wtedy może się odbić od trampoliny. A to masz na myśli cooldown? Że gracz może ponownie użyć trampoliny PO 5 sekundach jej użycia, czy jedynie podczas trwania animacji, ale która jest odtwarzana CO 5 sekund? 19 godzin temu, pankracy napisał: Grawitacja wtedy powinna zwolnić o połowę a jak wyladuje to wrócić do pierwotnego stanu No grawitacją steruj już w Step par_entity, w kodzie gdzie sprawdzasz czy obiekt stoi na ziemi ustawiaj pierwotną wartość grawitacji `gravity = 1.0`. A ustawienie połowy grawitacji ustawiaj w kodzie, gdzie sterujesz trampoliną i ustawiasz graczowi prędkość odbicia, czyli w Step obj_trampolina, w bloku if place_meeting. 19 godzin temu, pankracy napisał: Dźwięk trampoliny powinien być odtwarzany w chwili wyświetlania animacji. Jak masz if place_meeting w obj_trampolina, to tam przy okazji możesz też odtworzyć dźwięk. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 14 Czerwca 2021 Autor Udostępnij Opublikowano 14 Czerwca 2021 18 minut temu, Konrad-GM napisał: A to masz na myśli cooldown? Że gracz może ponownie użyć trampoliny PO 5 sekundach jej użycia, czy jedynie podczas trwania animacji, ale która jest odtwarzana CO 5 sekund? No grawitacją steruj już w Step par_entity, w kodzie gdzie sprawdzasz czy obiekt stoi na ziemi ustawiaj pierwotną wartość grawitacji `gravity = 1.0`. A ustawienie połowy grawitacji ustawiaj w kodzie, gdzie sterujesz trampoliną i ustawiasz graczowi prędkość odbicia, czyli w Step obj_trampolina, w bloku if place_meeting. Jak masz if place_meeting w obj_trampolina, to tam przy okazji możesz też odtworzyć dźwięk. Dokładnie tak mam na myśli cooldown. Co do grawitacji fakt w obiekcie dziedziczacym par_entity tam musze grawitacje zostawić na wartości g = 1; bo inaczej zmieni mi się w całej grze.Natomiast mam ją jak napisałeś sterować w trampolinie w zdarzeniu step If place_meeting(x,y,par_entity) { g = 0.5; with instance_place(x,y,par_entity) { hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Tylko teraz dobrze ustawić w bloku kodu grawitacje z powrotem na wartość 1 jak dotknie podłoża. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 14 Czerwca 2021 Udostępnij Opublikowano 14 Czerwca 2021 Godzinę temu, pankracy napisał: Dokładnie tak mam na myśli cooldown W takim razie musisz dodać Alarm w obiekcie obj_trampolina, np. dodaj zdarzenie Alarm[0] i w nim wstaw blok kodu resetujący flagę `start = false`. Generalnie polega to na tym, że teraz Animation End nas nie interesuje, tylko czas, więc w Animation End możesz zatrzymać animację `image_speed = 0` ale nie zmieniaj flagi `start` - to zrobi Alarm[0] po 5 sekundach. Godzinę temu, pankracy napisał: Co do grawitacji fakt w obiekcie dziedziczacym par_entity tam musze grawitacje zostawić na wartości g = 1; bo inaczej zmieni mi się w całej grze. Natomiast mam ją jak napisałeś sterować w trampolinie w zdarzeniu step No ok, ale teraz ustawiasz zmienną `g = 0.5` w instancji obj_trampolina, zamiast w par_entity, dlatego to nie zadziała. Ustaw grawitację w instancji par_entity, przecież od tego masz blok `with instance_place(x,y,par_entity)` który tak jak hspd i vspd ustawi również zmienną `g` tylko wyłącznie w instancji par_entity dotykającej trampoliny. Natomiast resetować grawitację musisz w kodzie par_entity, bo obj_trampolina nie ma pojęcia o stanie obiektu par_entity po X czasie, jak np. czy po dwóch sekundach par_entity stoi na ziemi, czy jeszcze fruwa. Dodatkowo w bloku `if place_meeting(x,y,par_entity)` (ale nie w `with instance_place(x,y,par_entity)`) ustawiaj Alarm, jeżeli cooldown ma trwać 5 sekund - `alarm[0] = room_speed * 5`. Mnożymy room_speed (1 sekunda) z wartością 5, to otrzymamy 5 sekund. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 16 godzin temu, Konrad-GM napisał: W takim razie musisz dodać Alarm w obiekcie obj_trampolina, np. dodaj zdarzenie Alarm[0] i w nim wstaw blok kodu resetujący flagę `start = false`. Generalnie polega to na tym, że teraz Animation End nas nie interesuje, tylko czas, więc w Animation End możesz zatrzymać animację `image_speed = 0` ale nie zmieniaj flagi `start` - to zrobi Alarm[0] po 5 sekundach. No ok, ale teraz ustawiasz zmienną `g = 0.5` w instancji obj_trampolina, zamiast w par_entity, dlatego to nie zadziała. Ustaw grawitację w instancji par_entity, przecież od tego masz blok `with instance_place(x,y,par_entity)` który tak jak hspd i vspd ustawi również zmienną `g` tylko wyłącznie w instancji par_entity dotykającej trampoliny. Natomiast resetować grawitację musisz w kodzie par_entity, bo obj_trampolina nie ma pojęcia o stanie obiektu par_entity po X czasie, jak np. czy po dwóch sekundach par_entity stoi na ziemi, czy jeszcze fruwa. Dodatkowo w bloku `if place_meeting(x,y,par_entity)` (ale nie w `with instance_place(x,y,par_entity)`) ustawiaj Alarm, jeżeli cooldown ma trwać 5 sekund - `alarm[0] = room_speed * 5`. Mnożymy room_speed (1 sekunda) z wartością 5, to otrzymamy 5 sekund. Obj_trampolina Create pwr = 152; image_speed = 2;//bo chcemy żeby animacja była odtwarzana Alarm[0] start = false Tyle zrozumiałem;-) powyżej jest dobrze? teraz tak ustawienie grawitacji muszę Step if place_meeting(x,y,par_entity) { alarm[0] = room_speed * 5 with instance_place(x,y,par_entity) { hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Animation end image_index = 0; image_speed = 0; I teraz grawitacja. w par_entity mam ją ustawioną na 1 więc tu mam ją ustawić za przełącznikiem with instance_place(x,y,par_entity)? bo jak wspomniałem jak grawitacje zmienię na 0.5 w samej instancji par_entity to mi się zmieni w całej grze a tego nie chce :-) No i pozostaje kwestia zresetowania grawitacji na wartość 1 jak już wyląduje gracz dotknie ziemi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 52 minuty temu, pankracy napisał: w par_entity mam ją ustawioną na 1 więc tu mam ją ustawić za przełącznikiem with instance_place(x,y,par_entity)? bo jak wspomniałem jak grawitacje zmienię na 0.5 w samej instancji par_entity to mi się zmieni w całej grze a tego nie chce ? A to zmienna `g` jest zmienną globalną? pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 45 minut temu, Konrad-GM napisał: A to zmienna `g` jest zmienną globalną? Konradzie zmienną globalną nie jest,ale z obiektu dziedziczącego par_entity korzysta praktycznie każdy obiekt bo dziedziczą z niego. Dlatego jak tam zmienię wartość g=1; na g=0.5; to gracz i obiekty wrogowie będą zachowywać się jakby wykonywali spacer na księżycu ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 4 minuty temu, pankracy napisał: z obiektu dziedziczącego par_entity korzysta praktycznie każdy obiekt bo dziedziczą z niego Ale nie dziedziczą tych samych stanów, każda instancja tworzy własną wersję zmiennej `g` (jedynie na podstawie obiektu par_entity). pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 6 minut temu, Konrad-GM napisał: Ale nie dziedziczą tych samych stanów, każda instancja tworzy własną wersję zmiennej `g` (jedynie na podstawie obiektu par_entity). Hmmm na to wygląda,ale jeśli ja zmienie w par_entity w zdarzeniu create wartość grawitacji g=1; na g=0.5; to będę jak Amstrong na Księżycu Konradzie. Może inaczej co musiałbym teraz zrobić aby nie popsuć grawitacji? a jednocześnie mógł skorzystać z wolniejszej grawitacji przy tej trampolinie co wyżej a jak wyląduje powinno się zresetować do grawitacji jaką mam obecnie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 19 minut temu, pankracy napisał: Hmmm na to wygląda,ale jeśli ja zmienie w par_entity w zdarzeniu create wartość grawitacji g=1; na g=0.5; to będę jak Amstrong na Księżycu Konradzie. Dlatego nie ustawiaj tej wartości w create Wiesz w ogóle do czego służy blok with i dlaczego właśnie tam ustawiasz hspd i vspd instancji par_entity? Czy nagle wszystkie obiekty na ekranie skaczą wraz z graczem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 52 minuty temu, Konrad-GM napisał: Dlatego nie ustawiaj tej wartości w create Wiesz w ogóle do czego służy blok with i dlaczego właśnie tam ustawiasz hspd i vspd instancji par_entity? Czy nagle wszystkie obiekty na ekranie skaczą wraz z graczem? Oczywiście, że wiem With tyczy się konkretnej instancji do ktorej chcemy się odwołać bedąc w innej:-) Chyba mówimy o dwóch róznych rzeczach:-) Poprzedzajac with plus instancja do której chcemy się odwołać w innej instancji ma to wtedy sens zmiana wartości jakiejś zmiennej bo nie zmienimy tej wartości dla wszystkich obiektów tylko dla tej jednej do której się odwołaliśmy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 20 minut temu, pankracy napisał: With tyczy się konkretnej instancji do ktorej chcemy się odwołać bedąc w innej:-) 20 minut temu, pankracy napisał: ma to wtedy sens zmiana wartości jakiejś zmiennej bo nie zmienimy tej wartości dla wszystkich obiektów tylko dla tej jednej do której się odwołaliśmy 1 godzinę temu, pankracy napisał: Konradzie zmienną globalną nie jest,ale z obiektu dziedziczącego par_entity korzysta praktycznie każdy obiekt bo dziedziczą z niego. Dlatego jak tam zmienię wartość g=1; na g=0.5; to gracz i obiekty wrogowie będą zachowywać się jakby wykonywali spacer na księżycu ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 ? 6 godzin temu, Konrad-GM napisał: Słuszne jest zmiana grawitacji po bloku with par_entity prawda? Bo wtedy odwołamy się bezpośrednio do tej instancji if place_meeting(x,y,par_entity) { alarm[0] = room_speed * 5 with instance_place(x,y,par_entity) { g=0.5; hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Teraz pytanie gdzie powinno się resetować grawitacje do wartości 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 1 godzinę temu, pankracy napisał: Słuszne jest zmiana grawitacji po bloku with par_entity prawda? Bo wtedy odwołamy się bezpośrednio do tej instancji Tak, jest to jak najbardziej poprawne. 1 godzinę temu, pankracy napisał: Teraz pytanie gdzie powinno się resetować grawitacje do wartości 1 obj_trampolina zmienia grawitację tylko wyłącznie kiedy dotknie par_entity, imo najlepiej byłoby przywrócić wartość w Step par_entity kiedy opadnie już na ziemię. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 3 godziny temu, Konrad-GM napisał: Tak, jest to jak najbardziej poprawne. obj_trampolina zmienia grawitację tylko wyłącznie kiedy dotknie par_entity, imo najlepiej byłoby przywrócić wartość w Step par_entity kiedy opadnie już na ziemię. No właśnie...a jak oblicze moment kiedy gracz znajdzie się na ziemi? a może dodać obiekt który jest solidem? mam obj_wall on jest solidem dodać w zdarzeniu step w trampolinie warunek,że jak dotknie obj_wall to grawitacja będzie wynosiła wartość 1? kod nie działa. Nadal animacja trampoliny nie jest odtwarzana co 5 sekund i w trakcie trwania animacji gracz może odbić się od trampoliny. może jeszcze flaga start musi być gdzieś zdefiniowana a nie tylko w alarmie0? obj_trampolina create pwr = 152; image_speed = 2;//bo chcemy żeby animacja była odtwarzana Alarm[0] start = false step if place_meeting(x,y,par_entity) { alarm[0] = room_speed * 5 with instance_place(x,y,par_entity) { g=0.5; //ustawiamy podczas skoku grawitacje wolniej aby gracz się przemieszczał hspd=lengthdir_x(1,other.image_angle+45)*other.pwr; vspd=lengthdir_y(1,other.image_angle+45)*other.pwr; audio_play_sound(snd_trampolina, 10, false); } image_speed = 1; } Animation End image_index = 0; image_speed = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 15 Czerwca 2021 Udostępnij Opublikowano 15 Czerwca 2021 11 minut temu, pankracy napisał: kod nie działa. Nadal animacja trampoliny nie jest odtwarzana co 5 sekund i w trakcie trwania animacji gracz może odbić się od trampoliny. może jeszcze flaga start musi być gdzieś zdefiniowana a nie tylko w alarmie0? W kodzie Step nie masz ustawianej flagi `start = true` więc technicznie flaga nigdy się nie zmienia. Wstaw `start = true` zaraz pod `alarm[0] = room_speed * 5`. Dodatkowo w Step nie sprawdzasz czy `start == false` żeby uruchomić blok odpowiedzialny za skok. Np. `if start == false && place_meeting(x,y,par_entity) {`. pankracy 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pankracy Opublikowano 15 Czerwca 2021 Autor Udostępnij Opublikowano 15 Czerwca 2021 31 minut temu, Konrad-GM napisał: W kodzie Step nie masz ustawianej flagi `start = true` więc technicznie flaga nigdy się nie zmienia. Wstaw `start = true` zaraz pod `alarm[0] = room_speed * 5`. Dodatkowo w Step nie sprawdzasz czy `start == false` żeby uruchomić blok odpowiedzialny za skok. Np. `if start == false && place_meeting(x,y,par_entity) {`. tak nie zadziała,bo nie będę miał zdeklarowanej zmiennej w create trampoliny i wywali mi komunikat o braku zmiennej start. Chyba,że użyć var w step zdarzenia i dodać zmienną start? step if obj_trampolina == false && place_meeting(x,y,par_entity) { alarm[0] = room_speed * 5 start = true; with instance_place(x,y,par_entity) { g = 0.5; hspd = lengthdir_x(1,other.image_angle+25)*other.pwr; vspd = lengthdir_y(1,other.image_angle+25)*other.pwr; } image_speed = 1; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się