Skręć Se Silnik, cz.3
 

autor: Kamil


 

Ruch platformowy część 2

 

   Dzisiaj w rubryce dla wszystkich, którzy chcą łatwo wyposażyć swoje gry w silnik kontynuuję temat własnego ruchu platformowego. Postaramy się dodać dwa ciekawe elementy do naszego silnika sprzed dwóch miesięcy - półprzepuszczalne platformy oraz łapanie się krawędzi. Czasem napotykamy pierwszy element w grach klikowych (warto zauważyć, że standardowy ruch ma to zaimplementowane), natomiast drugiego jeszcze chyba w polskiej grze klikowej nie widziałem. Zacznijmy od platform!

 

   Półprzepuszczalne platformy, co kryje się pod tą nazwą? Mam na myśli specjalny rodzaj platform, na które możemy wskoczyć od dołu, ale nie możemy z nich spaść. Różnica jest taka, jak gdy nadajemy obiektowi tła wartość przeszkoda na TAK lub PLATFORMA - TAK stwarza platformę nieprzepuszczalną, a PLATFORMA - półprzepuszczalną. Jeżeli dalej nie rozumiecie - rysunek:

 

Jak widać, postać może wskoczyć od dołu na platformę, ale nie może z niej spaść. Już rozumiecie?

 

   Teraz jak to zrobić? Na pewno trzeba usunąć odbicie od sufitu z naszego poprzedniego ruchu. Drugą zmianą jest dodanie warunku w zdarzeniu odpowiadającym za zatrzymywanie się postaci na platformie - powinno zachodzić ono tylko wtedy, gdy wartość A obiektu (odpowiedzialna za prędkość w ruchu pionowym) jest większa od 0 (czyli - postać po prostu spada).

 

   Po chwili testowania tego sposobu przekonamy się zapewne, że występuje problem gdy postać zacznie spadek będąc w platformie - wtedy się w niej zatrzymuje. Jest kilka sposobów na rozwiązanie tego problemu, ja zdecydowałem się na stworzenie platform - przeszkód o grubości 1px, które ustawiam dokładnie na górnej krawędzi tej właściwej platformy, przez co świetnie imitują górną krawędź konturu platformy. Sposób nieco niewygodny (troszkę więcej pracy przy układaniu poziomów), ale wydaje mi się bezpieczny.

 

   Teraz zajmijmy się łapaniem się krawędzi przeszkód - to także jest proste. Najlepszym sposobem jest stworzenie dodatkowego detektora, który wykryje górną krawędź platformy. Działać będzie na niemal identycznej zasadzie jak dolny detektor. Umieśćmy go na wysokości górnej krawędzi gracza, nieco wystając poza niego.

 

   Musimy stworzyć zdarzenia związane z aktywacją tego, nazwijmy to, łapaka. Np. przy pomocy klawisza shift. Gdy postać znajduje się w powietrzu i shift jest trzymany - podnoś flagę łapaka. Gdy shift nie jest trzymany - opuszczaj. Teraz należy zrobić zdarzenie niemal identyczne jak te z podstawowego ruchu platformowego związanego z detekcją kolizji dolnej, z tą różnicą, że wykrywamy kolizję łapaka z podłożem oraz flaga łapaka musi być, oczywiście, podniesiona.

 

   I znów natrafiamy na problem podobnej natury jak w poprzednim przykładzie - przecież nie powinno być móc się łapać wewnątrz platformy, tylko za jej górną krawędź. Rozwiązanie jest identyczne jak wyżej - właściwa, solidna platforma grubości 1px.

 

   Zagadnienie jest o tyle proste, że nie będę dokładnie tłumaczył, jakie zdarzenia trzeba dodać - wszystko opisałem wyżej. To już koniec tej części artykułu, być może jeszcze spotkamy się podczas dodawania nowych bajerów do naszego ruchu. I znów polecam własne eksperymenty, to naprawdę nie jest trudne!

 

 

 

Copyright (c) 2005-2006 Ślimaczek