Młody Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 Witam , kolejny problem ... otóż robię taką gierkę 1d , co z tego wyjdzie , się zobaczy . I mój pierwszy problem napotkałem przy kolizjach , poszukałem trochę , użyłem wyszukiwarki ... pustka ! Teraz zwracam się do was z prośbą o pomoc : -czy możecie podać jakiś dobry kod do kolizji z ścianą w 1d ! (Ogromnie bym się ucieszył , gdyby było z komentarzami , co kod robi ;)) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 Po pierwsze nie 1d, tylko 2d :D A po drugie platformówka, czy TD? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 6 Lipca 2011 Autor Udostępnij Opublikowano 6 Lipca 2011 Mylisz się , gra widziana z góry (czyli 1d) nie z boku (czyli 2D) ... TD ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 To nadal są 2 wymiary (x i y) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 Gra widziana z góry też ma dwa wymiary x i y :) Edit: Edie znowu w tym samym czasie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 A tak bez offtopowania to collision_point(x,y,sciana,1,1) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 6 Lipca 2011 Administratorzy Udostępnij Opublikowano 6 Lipca 2011 nie ma gier 1d. nawet gra o wysokości 1px ma dwa rodzaje długości - 0 i 1 ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 "Gra 1D" Dobry temat do ligi24 :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 6 Lipca 2011 Autor Udostępnij Opublikowano 6 Lipca 2011 błaagam nie off-topujcie ! P.S. Thx ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 A co ci do tego czy offtopujemy? Poza tym nie offtopowaliśmy tylko poprawialiśmy twoje błędne pytanie które też jest częścią tematu :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
4tk Opublikowano 6 Lipca 2011 Udostępnij Opublikowano 6 Lipca 2011 A jak będzie próbował zrobić grę z anaglifem to się będzie pytał jak się robi kolizje 4D :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 7 Lipca 2011 Autor Udostępnij Opublikowano 7 Lipca 2011 A co ci do tego czy offtopujemy? Poza tym nie offtopowaliśmy tylko poprawialiśmy twoje błędne pytanie które też jest częścią tematu :) -15 razy ?! A jak będzie próbował zrobić grę z anaglifem to się będzie pytał jak się robi kolizje 4D :D -Jak będę chciał coś takiego zrobić , najpierw zaspamuje ci skrzynkę wiadomościami pt. "ile to 2 razy 2 " ;). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 7 Lipca 2011 Udostępnij Opublikowano 7 Lipca 2011 ^^ robi się zabawnie. kto chce bana na miesiąc? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 7 Lipca 2011 Udostępnij Opublikowano 7 Lipca 2011 kolizja ze sciana to event collision i tam wybierasz objekt sciany. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
MXQ Opublikowano 7 Lipca 2011 Udostępnij Opublikowano 7 Lipca 2011 właśnie, po co kod? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 8 Lipca 2011 Udostępnij Opublikowano 8 Lipca 2011 Jemu chyba chodziło o ślizganie się po ścianie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 11 Lipca 2011 Autor Udostępnij Opublikowano 11 Lipca 2011 Dzięki EdiePL , mimo , że w kodzie , przynajmniej pomogłeś ;) Jemu chyba chodziło o ślizganie się po ścianie... Nie , chodziło o to , że dotąd nie widziałem żadnego dobrego przykładu takiej kolizji . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Lordis Opublikowano 11 Lipca 2011 Udostępnij Opublikowano 11 Lipca 2011 Widze że ludzi nie chcą ci pomóc, więc postanowiłem napisać dla ciebie tutorial (nie chciało mi się kręcić filmiku). Mam nadzieje że ci się przyda, możesz go sobie zapisać na dysku i gdy bedziesz chciał zrobić kolizje 2 obiektów to tylko zetkniesz na mój tutorial i gotowe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
OriPL Opublikowano 11 Lipca 2011 Udostępnij Opublikowano 11 Lipca 2011 Ja na jego miejscu sprawdzał bym kolizje "Collision Line" z 4 stron (góra, dół, lewo, prawo) STEP: GML if keyboard_check(vk_left) and !collision_line(x-16,y-16,x-16,y+16,obj_wall,1,0) then x-=3; if keyboard_check(vk_right) and !collision_line(x+16,y-16,x+16,y+16,obj_wall,1,0) then x+=3; if keyboard_check(vk_up) and !collision_line(x-16,y-16,x+16,y-16,obj_wall,1,0) then y-=3; if keyboard_check(vk_down) and !collision_line(x-16,y+16,x-16,y+16,obj_wall,1,0) then y+=3; Warunkiem działania tego kodu jest to że sprite gracza musi mieć 32x32 pixele... jeżeli nie ma to trzeba kombinować z wartościami ale zasada jest prosta... jeżeli ma 64x64 to wartości będą 32... jeżeli jednak sprite gracza nie jest kwadratem to już będzie tutaj więcej matematyki niż to co podałem, tak czy siak mój kod zapewnia "ślizganie" się po ścianach gdy się na nie wejdzie... nie tak jak w dużej ilości wrzucanych tutaj gier że się wejdzie na ścianę i zwiecha... ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 11 Lipca 2011 Udostępnij Opublikowano 11 Lipca 2011 ... nie tak jak w dużej ilości wrzucanych tutaj gier że się wejdzie na ścianę i zwiecha... ;p I tu się mylisz :D . Wartość cofnięcia od ściany jest stała, a składowa prędkości prostopadła do powierzchni ściany jest zmienna. Efekt? Będzie skakał jak po schodkach :) . Strzelam, że Lordis trafił w gusty pytającego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 11 Lipca 2011 Udostępnij Opublikowano 11 Lipca 2011 mój kod zapewnia "ślizganie" się po ścianach gdy się na nie wejdzie... I tu się mylisz :D . Wartość cofnięcia od ściany jest stała, a składowa prędkości prostopadła do powierzchni ściany jest zmienna. Efekt? Będzie skakał jak po schodkach :) . Strzelam, że Lordis trafił w gusty pytającego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
OriPL Opublikowano 12 Lipca 2011 Udostępnij Opublikowano 12 Lipca 2011 I tu się mylisz :D . Wartość cofnięcia od ściany jest stała, a składowa prędkości prostopadła do powierzchni ściany jest zmienna. Efekt? Będzie skakał jak po schodkach :) ... nie mam pojęcia co tu napisałeś ale sprawdziłem i masz racje skacze... nie testowałem tego, mój błąd... lepszym rozwiązaniem będzie użycie "place_free(x,y)" GML if keyboard_check(vk_left) and place_free(x-3,y) then x-=3; if keyboard_check(vk_right) and place_free(x+3,y)then x+=3; if keyboard_check(vk_up) and place_free(x,y-3) then y-=3; if keyboard_check(vk_down) and place_free(x,y+3) then y+=3; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rudy Opublikowano 13 Lipca 2011 Udostępnij Opublikowano 13 Lipca 2011 nie mam pojęcia co tu napisałeś ale sprawdziłem i masz racje skacze... nie testowałem tego, mój błąd... lepszym rozwiązaniem będzie użycie "place_free(x,y)" Hehe, faktycznie namieszałem :) . Miałem na myśli to, że jeżeli postać znajdzie sie kolizji ze ścianą, to nie wiesz, czy wbiła się na 3 px, czy na 5, czy na 0.5. Dlatego nie możesz twierdzić, że to będzie akurat 3. Będzie tak tylko w przypadku gdy: - postać chodzi tylko po osiach (tzn tylko w kierunkach 0, 90, 180 i 270) - ma wtedy ustaloną szybkość na 3. Rozwiązanie niedawno gdzieś podawałem, mianowicie tu: Link Właściwie przykład był zrobiony na postawie podesłanej gry parę postów wyżej. Program nie przesuwa obiektu względem własnej pozycji (+=), ale oblicza nową pozycję, w której nie znajdzie się kolizja (=). Dzięki temu można wbić się w ścianę ile się chce, i tak zostanie obliczona nowa pozycja ;) . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 13 Lipca 2011 Autor Udostępnij Opublikowano 13 Lipca 2011 To , żeby nie tworzyć nowego tematu : znalazłem przykład plecaka i chciałem go przerobić , żeby hełm gdy (wpadnę z nim w kolizję lub po prostu na niego nacisnę) "był na mnie" Zrobiłem tak : OBIEKT : przedmioty ma ten kod(w LEFT BUTTON PRESSED) : GML x=player.x y=player.y CHEŁM : ma oczywiście PARENT : przedmioty. I problem w tym , że hełm zostaje w miejscu gdzie przed chwilą byliśmy , próbowałem trochę i za Chiny nie wymyślę ! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 13 Lipca 2011 Udostępnij Opublikowano 13 Lipca 2011 wstaw ten kod w step geniuszu... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 13 Lipca 2011 Autor Udostępnij Opublikowano 13 Lipca 2011 No sorki , ale nie wiem jak to napisać w stepie : najpierw jesteś tu (x,y) [czyli : create(x,y)?] gdy nacisne lewym przyciskiem myszy "bądź na mnie" Jak to zrobić ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Lipca 2011 Udostępnij Opublikowano 13 Lipca 2011 CREATE GML zmienna=0 LEFT BUTTON PRESSED GML zmienna=1 STEP: GML if zmienna=1 { x=player.x y=player.y } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TheMarcQ Opublikowano 13 Lipca 2011 Udostępnij Opublikowano 13 Lipca 2011 https://forum.gmclan.org/index.php?showtopic=9989 mouse pressed wykonuje sie raz gdy klikniesz myszka, a to oznacza ze x=player.x y=player.y wypelni sie raz i chelm przesunie sie w miejsce player'a raz W step kod wyoknuje sie bez przerwy, wiec x=player.x y=player.y bedzie przesuwal chelm caly czas na miejsce player'a a zeby pamietal czy kliknales czy nie zrob jak ediepl Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Młody Opublikowano 13 Lipca 2011 Autor Udostępnij Opublikowano 13 Lipca 2011 oki , to jeszcze jedno pytanie związane z powyższym (P.S. Dzięki !) jak zrobić , że dopiero gdy nasza postać jest w odległości od powyższego przedmiotu np. 32 piksele , dopiero wtedy można wziąć dany przedmiot ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 13 Lipca 2011 Udostępnij Opublikowano 13 Lipca 2011 LEFT BUTTON PRESSED GML if distance_to_object(player) <=32{ zmienna=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ę