SimianVirus7 Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 Witam. Proszę o pomoc z fizyką wbudowaną w game makerze. To mój pierwszy projekt w którym ją wykorzystuje. Mam problem z odbijaniem się jajek od przeciwników. Mianowicie chciałbym, aby jajko trafione w przeciwnika odbiło się w przeciwną stronę, trochę ku górze. Przesyłam film, niestety w słabej jakości, ponieważ na szybko pobierałem darmowy program do obróbki wideo i nie miałem czasu go ogarnąć. Tak jest: https://www.youtube.com/embed/YbjvPYI2v9Q A takie są założenia: Jajko ma skrypty zbudowane na phy_speed_x / phy_speed_y. Alarm ustawiony na około 2 sekundy, żeby zmienił trase jajka do gracza. Myślałem nad physics_apply_impulse albo physics_apply_local_force ale nic mi się nie udawało. Jajko zachowywało się dziwnie; wybijało w kosmos. Ktoś ma jakieś pomysły albo rady? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 te funkcje z impuls w nazwie ignorują masę ciała przy nadawaniu siły dlatego wybija w kosmos. Użyj apply force ale nie local bo jajko się obraca a ty chcesz nadać siłę globalnie w górę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 2 Maja 2017 Autor Udostępnij Opublikowano 2 Maja 2017 Cóż, męczyłem się z tym forcem ale na próżno. Zrobiłem to z pomocą phy_speed_x i w sumie dało pożądany efekt. Nie wiem dlaczego od razu na do nie wpadłem, a jak widać, najciemniej pod latarnią. Nie chcę rozpoczynać kolejnego wątku więc dam tutaj drugie pytanie. Czy można zrobić blok kodu, który będzie wywoływany w instancji other (nie potrafię tłumaczyć) np. GML other.phy_speed_x = -3 other.phy_speed_y = -3 Czy można to zamienić na coś w stylu: GML with(oEgg) { phy_speed_x = -3 phy_speed_y = -3 } ,bo problem z powyższym kodem jest taki, że działa na każde jajko w roomie, a nie na tą jedną instancję. With(other) nie działa, próbowałem coś takiego, ale też bez skutku GML var oID = other.id with(oID) { phy_speed_x = -3 phy_speed_y = -3 } EDIT: Dobra mam. Wszystko działa tak jak chciałem. Dziękuje za odpowiedzi. GML with(oEgg.id) { phy_speed_x = -3 phy_speed_y = -3 } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 Zastanawia mnie czemu with (other) nie podziałało, bo powinno Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 2 Maja 2017 Autor Udostępnij Opublikowano 2 Maja 2017 No właśnie też mnie to zdziwiło. Wiem, że z instance_destroy() zawsze się to robi, żeby ta przeciwna instancja się zniszczyła. Mam na myśli to: GML with(other) { instance_destroy(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 O ile wiem te eventy kolizji działają przy tej fizyce i mnie teraz zaskoczyłeś tym bardziej że with(oEgg.id) zadziałało a to jest to samo co other Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 2 Maja 2017 Autor Udostępnij Opublikowano 2 Maja 2017 Za jakieś 40 minut sprawdze jeszcze raz, czy może ten with(other) jednak działa ale mam wrażenie, że próbowałem tego rozwiązania i nie działało. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 2 Maja 2017 Udostępnij Opublikowano 2 Maja 2017 Te eventy kolizji faktycznie czasem mogą nie zadziałać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 2 Maja 2017 Autor Udostępnij Opublikowano 2 Maja 2017 Nie, with(other) nie działa. Ponadto, jeśli zastosuję tą funkcje to kod w jej bloku wykonuje się na przeciwniku i prawdopodobnie na jajku ale pomija kolizje (odbicie od przeciwnika). Musi pozostać with(oEgg.id). 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ę