Skocz do zawartości

Zablokowane Gdy włączę w menu tryb "coop" pojawia się drugi gracz


Rekomendowane odpowiedzi

Maska kolizji znajduje się w oknie tworzenia obrazku, tam gdzie masz opcje wczytaj, edytuj itd. Jeżeli masz GM8 te opcje są w Modyfi Mask, a jeżeli 7.1 i starszą to od razu w tamtym oknie. Tam poszukaj Bounding Box. W tym są opcje Automatic, Manual, i Full image. Jeżeli masz Automatycznie to maska kolizji znajduje się automatycznie na całym obrazku gdzie coś narysowałeś, a ona odpowiada za to w którym miejscu pixelu po zderzeniu będzie się działa instrukcje kolizji. Załapałeś?? Dobrze jest wiedzieć, ale to sprawdzenie to będzie dokładnie to samo co to:

GML
//W kolizji

woda = 1

//W draw

draw_text(10,10,string(woda))

Jeżeli woda = 1 to maska kolizji jet dobrze ustawiona.

 

Jeżeli za dużo dla ciebie dawać cz. projektu to daj kod od samego sterowania graczem i kolizji z "oWoda"

 

Ale duży ten temat xD

Odnośnik do komentarza
Udostępnij na innych stronach

Zaznaczyłem w Modify Mask. Gdzie była ta maska itd. "full". Ale i tak nic nie działa ;/

 

Edit: Korzystam z przykładu Dawiddsa (do platformówek) jeśli to pomoże.

 

Edit2: Proszę, pomóżcie noo :/ Dodam jeszce, że mam poustawiane w wodze depth i jest ona przeźroczysta. Bo chcę żeby była przed graczem i prześwitywała :P

Odnośnik do komentarza
Udostępnij na innych stronach

Fajny kod poruszania w tym przykładzie xD

Cały kod od poruszania dajesz w gigantyczną klamrę, i dodajesz tam warunek if woda=0{WIELKI KOD} a później go kopiujesz i wpisujesz do następnej klamry if woda = 1. Nie daje tu else bo możesz coś wymyślić że będziesz pływał w lawie czy coś xD. W tym 2 zmieniasz co tam chcesz i git majonez. Powinno działać, ale jeszcze sprawdzę.

 

 

EDIT:

Dobra poddaje się. Ten kod jest jak na mnie zbyt rozbudowany. Będzie ciężko. W tym przykładzie on zawsze wykrywa wodę, lecz kod jest tak rozpisany że sam musisz stwierdzić co się zmieni podczas wejścia do wody a co nie. W Create jest masa rzeczy które trzeba by było zmienić podczas wlotu do wody. W step możesz dopisać if woda = 1 && [To co niżej] {Ponowna deklaracja wszystkich rzeczy które mają się zmieniać.} if woda = 1 && [Jedna z zmiennych aby nie powtarzał tego co nie miara] {Ponowna deklaracja wszystkich rzeczy które mają się zmieniać.}. Chcesz więcej pomocy w tym temacie. Niestety musisz poradzić sobie sam. Ten kod powyżej działa. Miłego myślenia.

Odnośnik do komentarza
Udostępnij na innych stronach

;/

Męczę się i męczę. Może player nadal nie koliduje z wodą?

 

 

EDiT: Tak jak myślałem, to nie koliduje!

Zrobiłem game_end i nic się nie stało :o Zmieniałem maski obu spritów ale nic nie pomaga ;O Jak zrobić tą kolizje, bo to chyba nie w kodzie problem :<

Odnośnik do komentarza
Udostępnij na innych stronach

Mam ustawione po prostu zdarzenie "kolizja z oPlayer" a w tym skrypt global.woda = 1.

Potem w oPlayer mam w Create:

if global.woda = 1

{

tutaj szybszkosc

grawitacja

tarcie

itd.

}

 

A potem if global.woda = 0

{

tutaj normalne tarcie itd.

}

 

Bochater jak i moja woda mają maski :/

Błagamm... niemożliwe, że jest to problem nie do rozwiązania :/

Jeszcze raz piszę, że mam playera w Depth -1, a wodę w depth -3 więc może o to chodzi? Hmm... ale raczej nie o to ;/

Odnośnik do komentarza
Udostępnij na innych stronach

No sprawdziłem właśnie nie przez text, tylko przez end_game ;o

Ale to nie to samo...

Text sprawdza, czy dobrze wyczytuje kolizję.

End_game sprawdza, czy jak już wyczyta kolizję to coś się dzieje.

Możesz mi na priv podesłać, jeśli nie chcesz udostępniać wszystkim, spróbowałbym wtedy coś zrobić.

Odnośnik do komentarza
Udostępnij na innych stronach

Ten kod wpisz do step, a nie do create:

GML (step)
if global.woda = 1

{

//kod 1

}

if global.woda = 0

{

//kod 2

}

global.woda=false;

Create dotyczy tylko momentu tworzenia obiektu (kod ten wykonuje się tylko raz). Natomiast step wykonuje się ciągle.

Zamiast pisac dwa if, możesz także napisać:

GML (step)
if(global.woda)//jeżeli global.woda jest prawdą, czyli oPlayer ma kolizję z wodą...

{

//kod 1

global.woda=false;

}

else//...w przeciwnym razie (czyli nie ma kolizji z wodą) wykonaj to:

{

//kod 2

}

Wyjaśnienia wymaga tutaj global.woda=false. Gdy oPlayer ma kolizję z wodą global.woda=true (1). Wtedy wykonywany jest kod 1 i global.woda=false (0). Jeżeli oPlayer nadal ma kolizję z wodą to global.woda znowu wynosi true. Natomiast gdy oPlayer nie ma kolizji z woda, to global.woda=false. Wstawiając tylko global.woda=1; w kolizji woda-oPlayer, powodujesz, że po tej kolizji ciągle będzie wykonywany kod 1 (zmienna global.woda ciągle jest 1, niezależnie od tego czy oPlayer jest potem w wodzie czy też nie). Mam nadzieję, że nie ma w tym kodzie błędów i zrozumiałeś to co chciałem Ci napisać.

Odnośnik do komentarza
Udostępnij na innych stronach

no... step to raz, a dwa - jak wejdziesz raz to ci zmieni, ale potem bedziesz sie wszędzie na lądzie jak w wodzie poruszał...

daj bohaterowi w step to:

GML
if distance_to_object(oWODA)=0

{

global.woda=1

}

else

{

global.woda=0

}

 

i wtedy zdarzenie kolizji możesz wywalić :)

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...