cortezillo Opublikowano 21 Listopada 2017 Udostępnij Opublikowano 21 Listopada 2017 Witam. Stworzyłem ruch platformowy taki jak w przykładzie FAQ pkt 13. Jednak moja postać skacze wysoko ale w bardzo szybkim tempie leci do góry po czym w bardzo szybkim tempie spada. Bawiłem się zmiennymi bo na mój rozum linijka z ''gravity'' powinna za to odpowiadać a tu bach, żadna linijka nie jest za to odpowiedzialna (?) przynajmniej dla mnie. Próbowałem już wiele różnych kombinacji z zmiennymi w tym całym algorytmie skryptów ale nic, dalej to samo. Zmienne vspeed oraz gravity odpowiadają za to samo a bynajmniej tak to wygląda. Więc jak kolwiek nie ustawie postać za szybko leci do góry i za szybko spada z powrotem na dół. Jak to zmienić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PatrykPlayingPOLSKA Opublikowano 21 Listopada 2017 Udostępnij Opublikowano 21 Listopada 2017 Witaj na GMC ! Przydałoby się wiedzieć jakiej wersji gamemaker'a używasz.Nie wiemy ile wynoszą twoje zmienne,ciężko stwierdzić dlaczego tak się dzieje,podaj nam swój kod.Na początek upewnij się że nie masz w innych eventach wpisanej zmiennej gravity,bardzo możliwe że inny event ustawia Ci ciągle gravitacje na taką jakiej byś nie chciał. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 22 Listopada 2017 Administratorzy Udostępnij Opublikowano 22 Listopada 2017 11 godzin temu, cortezillo napisał: Zmienne vspeed oraz gravity odpowiadają za to samo a bynajmniej tak to wygląda. Jeśli co step ustawiasz vspeed, to może tak to wyglądać, ponieważ: vspeed = 5; // prędkość pionowa 5 gravity_direction = 270; // w dół gravity = 0.1 // grawitacja = 0.1, zatem co krok zwększaj vspeed o 0.1 // koniec eventu step, następuje przesunięcie postaci o y += 5 // vspeed zostaje zwiększone o 0.1 (bo grawitacja działa w kierunku 270, o 0.1, ma przyspieszać opadanie // ... engine przechodzi przez kolejne eventy, w tym draw // ... wchodzi kolejny krok, znów wykonujemy event step // vspeed jest obecnie równe 5.1 vspeed = 5; // UPS! Mimo, że engine ustawił vspeed na 5.1, my w kolejnym kroku nadpisujemy tę wartość nim postać się ruszy! stąd wrażenie. gravity_direction = 270; gravity = 0.1; Jeszcze taki szybki kurs: 1) przesuwanie postaci: x += <wartość>; y += <wartość>; powoduje przesunięcie w tejże chwili i w kolejnej linijce kodu X i Y mają nowe wartości. 2) speed = 2; direction = 50; ustawione zostają: hspeed = lengthdir_x(speed, direction); vspeed = lengthdir_y(speed, direction); x i y zostają zwiększone na koniec eventu End Step o hspeed i vspeed 3) hspeed = 5; vspeed = 2; ustawione zostają automatycznie: speed = point_distance(0,0, hspeed, vspeed); direction = point_direction(0,0, hspeed, vspeed); x i y zostają zwiększone na koniec eventu End Step o hspeed i vspeed 4) po zmianie X i Y na koniec End Step, zostaje nadana wartość gravity: hspeed += lengthdir_x(gravity, gravity_direction); vspeed += lengthdir_y(gravity, gravity_direction); (speed i direction zostają zaktualizowane j.w.) a następnie friction: speed = (abs(speed) > friction) ? (speed - friction) : 0; (hspeed i vspeed zostają zaktualizowane j.w.) Mniej więcej działa to tak, aczkolwiek dla niektórych da się podawać ujemne wartości, więc jeszcze bardziej skomplikowanie to się przelicza, ale to powinno rozjaśnić wiele. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
cortezillo Opublikowano 24 Listopada 2017 Autor Udostępnij Opublikowano 24 Listopada 2017 Dzięki za pomoc, temat zamknięty Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi