Discuss Scratch
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
Jako, że jest to mój 100-ny post na forum postanowiłem wykorzystać go do celów edukacyjnych tzn. na napisanie poradnika.
—————————————————————————————————————————————————————
Gotowy skrypt został zastosowany w mojej grze platformowej — Day and Night The platformer
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/212170093/#player
nowy link - https://scratch-mit-edu.ezproxyberklee.flo.org/projects/376857831/
—————————————————————————————————————————————————————
JAK STWORZYC DOBRY SILNIK DO GRY PLATFORMOWEJ?
1.Potrzebujemy 4 zmienne:
startX i startY - do określenia początkowego położenia gracza
vX - prędkość gracza w poziomie
vY - prędkość gracza w pionie
2.Teraz pierwsze skrypty:
Jeżeli chcemy żeby duszek poruszał się szybciej lub wolniej to możemy osiągnąć to zmieniając te wartości.
Potrzebne są nam ponadto 2 nowe bloki:
Dzięki temu pierwszemu będziemy mieli wrażenie jakoby nasz duszek ślizgał się po planszy jak po lodzie ( można to regulować odpowiednio zwiększając lub zmniejszając wartość vX ). Ten drugi po prostu w każdym obrocie pętli przemieszcza duszka o jego prędkość.
3. Kolejne skrypty:
Ten przydługi skrypt zapobiega wchodzeniu w ściany. Założenie jest takie, że jeżeli jesteśmy więcej niż 5 pikseli pod ziemią to jest to ściana. Zawarłem w nim też skrypt umożliwiający parkour (pozwalający odbić się od ściany).
4. Teraz jeszcze tylko skrypty na skakanie i spadanie, a wyglądają one następująco:
Skok może być też wyższy. Jeżeli chcesz żeby gracz mógł skakać wyżej to ustawiaj wartość vY na ponad 15.
Dlaczego przed sprawdzeniem, czy klawisz W jest wciśnięty zmieniam y o -1?
Wytłumaczenie jest proste. W przypadku kiedy gracz dotyka ziemi od razu idzie do góry, jeśli więc zaistniała kiedyś sytuacja, że gracz dotyka ziemii to już za chwilę gracz szedł do góry. Sprawdzam więc, czy duszek nie będzie dotykał ziemi 1 piksel niżej.
5. Na koniec pozostaje już tylko śmierć i przewijanie leveli. Załatwia to prosty skrypt, którego jednak nie będę tu opisywał ponieważ każdy potrzebuje trochę inny. Nie mógłbym zadowolić wszystkich.
—————————————————————————————————————————————————————
Gotowy skrypt został zastosowany w mojej grze platformowej — Day and Night The platformer
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/212170093/#player
nowy link - https://scratch-mit-edu.ezproxyberklee.flo.org/projects/376857831/
—————————————————————————————————————————————————————
JAK STWORZYC DOBRY SILNIK DO GRY PLATFORMOWEJ?
1.Potrzebujemy 4 zmienne:
startX i startY - do określenia początkowego położenia gracza
vX - prędkość gracza w poziomie
vY - prędkość gracza w pionie
2.Teraz pierwsze skrypty:
kiedy kliknięto zieloną flagę
idź do x: (startX) y: (startY) // ustawiamy duszka na początkową pozycję
zawsze
jeżeli <<klawisz [<right arrow> v] naciśnięty?> lub <klawisz [<d> v] naciśnięty?>> to // prawa strzałka lub D zwiększa prędkość w poziomie o 1
zmień [vX v] o (1)
end
jeżeli <<klawisz [<leftt arrow> v] naciśnięty?> lub <klawisz [<a> v] naciśnięty?>> to // lewa strzałka lub A zmniejsza prędkość w poziomie o 1
zmień [vX v] o (-1)
end
end
Jeżeli chcemy żeby duszek poruszał się szybciej lub wolniej to możemy osiągnąć to zmieniając te wartości.
Potrzebne są nam ponadto 2 nowe bloki:
ustaw [vX v] na ((vX) * (0.9))
zmień x o (vX)
Dzięki temu pierwszemu będziemy mieli wrażenie jakoby nasz duszek ślizgał się po planszy jak po lodzie ( można to regulować odpowiednio zwiększając lub zmniejszając wartość vX ). Ten drugi po prostu w każdym obrocie pętli przemieszcza duszka o jego prędkość.
3. Kolejne skrypty:
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (-5)
zmień x o ((vX) * (-1))
jeżeli <<klawisz [up arrow v] naciśnięty?> lub <klawisz [w v] naciśnięty?>> to // parkour (odbijamy się od ściany)
jeżeli <[vX] > [0]> to
ustaw [vX v] na [-5]
w przeciwnym razie
ustaw [vX v] na [5]
end
zmień [vY v] o (5)
w przeciwnym razie
ustaw [vX v] na [0]
end
end
end
end
end
end
end
Ten przydługi skrypt zapobiega wchodzeniu w ściany. Założenie jest takie, że jeżeli jesteśmy więcej niż 5 pikseli pod ziemią to jest to ściana. Zawarłem w nim też skrypt umożliwiający parkour (pozwalający odbić się od ściany).
4. Teraz jeszcze tylko skrypty na skakanie i spadanie, a wyglądają one następująco:
zmień [vY v] o (-1) // spadanie
zmień y o (vY)
jeżeli <dotyka [ground v] ?> to // dotykamy ziemii, nie musimy już dalej spadać
zmień y o ((vY) * (-1))
ustaw [vY v] na [0]
zmień y o (-1)
jeżeli <dotyka [ground v] ?> to // jeśli dotykamy ziemii to możemy skoczyć
jeżeli <<klawisz [up arrow v] naciśnięty?> lub <klawisz [w v] naciśnięty?>> to
ustaw [vY v] na [15]
end
end
zmień y o (1)
end
Skok może być też wyższy. Jeżeli chcesz żeby gracz mógł skakać wyżej to ustawiaj wartość vY na ponad 15.
Dlaczego przed sprawdzeniem, czy klawisz W jest wciśnięty zmieniam y o -1?
Wytłumaczenie jest proste. W przypadku kiedy gracz dotyka ziemi od razu idzie do góry, jeśli więc zaistniała kiedyś sytuacja, że gracz dotyka ziemii to już za chwilę gracz szedł do góry. Sprawdzam więc, czy duszek nie będzie dotykał ziemi 1 piksel niżej.
5. Na koniec pozostaje już tylko śmierć i przewijanie leveli. Załatwia to prosty skrypt, którego jednak nie będę tu opisywał ponieważ każdy potrzebuje trochę inny. Nie mógłbym zadowolić wszystkich.
Last edited by AANNTTOONNII (May 7, 2020 11:36:16)
- MentolMen
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
Mogłeś jeszcze dać skrypty na if które zmieniają x/y (przyspieszenie, skok) (wiem, że łatwe, ale jak coś dla nowicjuszy to wypadało by pokazać, że można y i x zmieniać bardzo łatwo)
w skrypcie 3. coś ci nie wyszło w skrypcie, bo zmienna na jako tekst wpisana.
To jest chyba ten skrypt taki najbardziej popularny, na pęczki go jest. Lepiej by było zrobić projekt czysto z tym skryptem, bo pewnie w twojej grze masz urozmaicenia, których nie opisałeś. Nawet jeśli nie, to łatwiej wziąć sam skrypt niż go szukać w grze.
“Potrzebne bendą nam 4 zmienne startX, startY i vX, vY”
*będą
Myślę, że nie ma sensu robienia poradników do rzeczy które są bardzo proste(platformówki są bardzo bardzo często robione w scratchu. Skryptów jest pełno takich) i w scratchu roi się od poradników do tego.
Jak już po polsku to “ground” tez po polsku
Tutaj przydałby się ogromny poradnik dla nowicjuszy, bo ludzie nie ogarniają podstaw. Jak ktoś ogarnia te skrypty, co dałeś, to też an pewno w
Napisane o 16:42(nie wysłało się przedtem)
w skrypcie 3. coś ci nie wyszło w skrypcie, bo zmienna na jako tekst wpisana.
To jest chyba ten skrypt taki najbardziej popularny, na pęczki go jest. Lepiej by było zrobić projekt czysto z tym skryptem, bo pewnie w twojej grze masz urozmaicenia, których nie opisałeś. Nawet jeśli nie, to łatwiej wziąć sam skrypt niż go szukać w grze.
“Potrzebne bendą nam 4 zmienne startX, startY i vX, vY”
*będą
Myślę, że nie ma sensu robienia poradników do rzeczy które są bardzo proste(platformówki są bardzo bardzo często robione w scratchu. Skryptów jest pełno takich) i w scratchu roi się od poradników do tego.
Jak już po polsku to “ground” tez po polsku

Tutaj przydałby się ogromny poradnik dla nowicjuszy, bo ludzie nie ogarniają podstaw. Jak ktoś ogarnia te skrypty, co dałeś, to też an pewno w
Napisane o 16:42(nie wysłało się przedtem)
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
Nie miałem pomysłu, a nie chciałem ani 3d ani multiplayer bo tego jeszcze pełniej niż skryptów do platformówek. Dodam zmianę przyspieszenia i wyskokości skoku do poradnika.
- MentolMen
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
multiplayer teraz nie de rady zrobić(da, ale będzie to w bardzo uproszczonej formie. Chociaż miałem ostatnio pomysł by podzielić na 10 zmiennych i może by szybko działało) 3d można na wiele sposobów zrobić i opisanie jak zrobić jeden i tak było by bardzo wyczerpujące, a nikt takiego nie zrobił. Można dodać jakieś skrypty na powierzchnie, która podbija w górę i taką która przyspiesza.
- Shroomi3
-
1 post
Jak zrobić dobry silnik gry platformowej?
Nie znam się za bardzo na Scratchu więc dzięki

Last edited by Shroomi3 (March 19, 2019 16:41:37)
- FnafEditor10987
-
5 posts
Jak zrobić dobry silnik gry platformowej?
kiedy duszek kliknięty
nadaj [Link do mojego projektu: v]
powiedz [https://scratch-mit-edu.ezproxyberklee.flo.org/projects/396434342/]
- artur32123
-
100+ posts
Jak zrobić dobry silnik gry platformowej?
Nie pisz tego w tematach poradnikowychkiedy duszek kliknięty
nadaj [Link do mojego projektu: v]
powiedz [https://scratch-mit-edu.ezproxyberklee.flo.org/projects/396434342/]

- paczekwmasle
-
500+ posts
Jak zrobić dobry silnik gry platformowej?
Dokładnie to ten: https://scratch-mit-edu.ezproxyberklee.flo.org/discuss/topic/57260/Nie pisz tego w tematach poradnikowychkiedy duszek kliknięty
nadaj [Link do mojego projektu: v]
powiedz [https://scratch-mit-edu.ezproxyberklee.flo.org/projects/396434342/]masz gdzieś temat do reklam gier/programów
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
kiedy kliknięto zieloną flagę
zawsze
powiedz [Dzięki] przez (2) s
zagraj dźwięk [Rób więcej takich poradników!]
Jest ich bardzo dużo. Zobacz tutaj.
Last edited by AANNTTOONNII (May 18, 2020 11:14:50)
- vocaloidka5
-
43 posts
Jak zrobić dobry silnik gry platformowej?
Ja używam takiego:
-Ten zielony to grunt
-Ten biały to portal na kolejny poziom
-Ten niebieski to kolor którego nie można dotykać
kiedy kliknięto zieloną flagę
idź do x: (-178) y: (-112)
zmień tło na [ v]
ustaw [poziom] na [1]
zawsze
jeżeli <klawisz [strzałka w górę] naciśnięty?> to
jeżeli <klawisz [strzałka w prawo] naciśnięty?> to
zmień x o (3)
end
jeżeli <klawisz [strzałka w lewo] naciśnięty?> to
zmień x o (-3)
end
w przeciwnym razie
jeżeli <klawisz [strzałka w prawo] naciśnięty?> to
zmień x o (5)
end
jeżeli <klawisz [strzałka w lewo] naciśnięty?> to
zmień x o (-5)
end
end
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
jeżeli <dotyka koloru [] ?> to
idź do x: (-178) y: (-112)
następne tło
grawitacja
zmień [poziom] o (1)
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
end
jeżeli <dotyka koloru [#352fe2] ?> to
idź do x: (-178) y: (-112)
grawitacja
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
end
end
definiuj grawitacja
jeżeli <nie <dotyka koloru [#70f71c] ?>> to
powtarzaj aż <dotyka koloru [#70f71c] ?>
zmień y o (-4)
end
end
kiedy kliknięto zieloną flagę
grawitacja
kiedy kliknięto zieloną flagę
zawsze
jeżeli <klawisz [strzałka w górę] naciśnięty?> to
powtórz (15) razy
zmień y o (4)
end
czekaj (0,02) s
grawitacja
end
end
-Ten zielony to grunt
-Ten biały to portal na kolejny poziom
-Ten niebieski to kolor którego nie można dotykać
Last edited by vocaloidka5 (May 19, 2020 07:31:16)
- artur32123
-
100+ posts
Jak zrobić dobry silnik gry platformowej?
Ja używam takiego:kiedy kliknięto zieloną flagę
idź do x: (-178) y: (-112)
zmień tło na [ v]
ustaw [poziom] na [1]
zawsze
jeżeli <klawisz [strzałka w górę] naciśnięty?> to
jeżeli <klawisz [strzałka w prawo] naciśnięty?> to
zmień x o (3)
end
jeżeli <klawisz [strzałka w lewo] naciśnięty?> to
zmień x o (-3)
end
w przeciwnym razie
jeżeli <klawisz [strzałka w prawo] naciśnięty?> to
zmień x o (5)
end
jeżeli <klawisz [strzałka w lewo] naciśnięty?> to
zmień x o (-5)
end
end
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
jeżeli <dotyka koloru [] ?> to
idź do x: (-178) y: (-112)
następne tło
grawitacja
zmień [poziom] o (1)
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
end
jeżeli <dotyka koloru [#352fe2] ?> to
idź do x: (-178) y: (-112)
grawitacja
jeżeli <dotyka koloru [#70f71c] ?> to
powtarzaj aż <nie <dotyka koloru [#70f71c] ?>>
zmień y o (2)
end
end
end
end
definiuj grawitacja
jeżeli <nie <dotyka koloru [#70f71c] ?>> to
powtarzaj aż <dotyka koloru [#70f71c] ?>
zmień y o (-4)
end
end
kiedy kliknięto zieloną flagę
grawitacja
kiedy kliknięto zieloną flagę
zawsze
jeżeli <klawisz [strzałka w górę] naciśnięty?> to
powtórz (15) razy
zmień y o (4)
end
czekaj (0,02) s
grawitacja
end
end
-Ten zielony to grunt
-Ten biały to portal na kolejny poziom
-Ten niebieski to kolor którego nie można dotykać
Wow! Świetny skrypt!
- paczekwmasle
-
500+ posts
Jak zrobić dobry silnik gry platformowej?
staraj się nie cytować takich długich skryptów, bo to zajmuje bardzo dużo miejsca wystarczy, że zwrócisz się do konkretnej osoby np. @vocaloidka5 Wow! Świetny skrypt!
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
Wow! Świetny skrypt!
Grawitacja, która nie przyspiesza?…
- artur32123
-
100+ posts
Jak zrobić dobry silnik gry platformowej?
Ok, postaram się.staraj się nie cytować takich długich skryptów, bo to zajmuje bardzo dużo miejsca wystarczy, że zwrócisz się do konkretnej osoby np. @vocaloidka5 Wow! Świetny skrypt!
- PL_DkD_PL
-
500+ posts
Jak zrobić dobry silnik gry platformowej?
A jak zrobić platformówkę z tzw. walljumpem?
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
A jak zrobić platformówkę z tzw. walljumpem?
Skrypt z poradnika go obsługuje. Tylko, że nazwałem go “parkourem”:
Ten przydługi skrypt zapobiega wchodzeniu w ściany. Założenie jest takie, że jeżeli jesteśmy więcej niż 5 pikseli pod ziemią to jest to ściana. Zawarłem w nim też skrypt umożliwiający parkour (pozwalający odbić się od ściany).
- alexisgamergo9
-
76 posts
Jak zrobić dobry silnik gry platformowej?
dzięki bardzo a hp bym chcial dodać i wtedy nie wiem co będe mial zrobić? Jako, że jest to mój 100-ny post na forum postanowiłem wykorzystać go do celów edukacyjnych tzn. na napisanie poradnika.
—————————————————————————————————————————————————————
Gotowy skrypt został zastosowany w mojej grze platformowej — Day and Night The platformer
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/212170093/#player
nowy link - https://scratch-mit-edu.ezproxyberklee.flo.org/projects/376857831/
—————————————————————————————————————————————————————
JAK STWORZYC DOBRY SILNIK DO GRY PLATFORMOWEJ?
1.Potrzebujemy 4 zmienne:
startX i startY - do określenia początkowego położenia gracza
vX - prędkość gracza w poziomie
vY - prędkość gracza w pionie
2.Teraz pierwsze skrypty:kiedy kliknięto zieloną flagę
idź do x: (startX) y: (startY) // ustawiamy duszka na początkową pozycję
zawsze
jeżeli <<klawisz [<right arrow> v] naciśnięty?> lub <klawisz [<d> v] naciśnięty?>> to // prawa strzałka lub D zwiększa prędkość w poziomie o 1
zmień [vX v] o (1)
end
jeżeli <<klawisz [<leftt arrow> v] naciśnięty?> lub <klawisz [<a> v] naciśnięty?>> to // lewa strzałka lub A zmniejsza prędkość w poziomie o 1
zmień [vX v] o (-1)
end
end
Jeżeli chcemy żeby duszek poruszał się szybciej lub wolniej to możemy osiągnąć to zmieniając te wartości.
Potrzebne są nam ponadto 2 nowe bloki:ustaw [vX v] na ((vX) * (0.9))
zmień x o (vX)
Dzięki temu pierwszemu będziemy mieli wrażenie jakoby nasz duszek ślizgał się po planszy jak po lodzie ( można to regulować odpowiednio zwiększając lub zmniejszając wartość vX ). Ten drugi po prostu w każdym obrocie pętli przemieszcza duszka o jego prędkość.
3. Kolejne skrypty:jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (1)
jeżeli <dotyka [ground v] ?> to
zmień y o (-5)
zmień x o ((vX) * (-1))
jeżeli <<klawisz [up arrow v] naciśnięty?> lub <klawisz [w v] naciśnięty?>> to // parkour (odbijamy się od ściany)
jeżeli <[vX] > [0]> to
ustaw [vX v] na [-5]
w przeciwnym razie
ustaw [vX v] na [5]
end
zmień [vY v] o (5)
w przeciwnym razie
ustaw [vX v] na [0]
end
end
end
end
end
end
end
Ten przydługi skrypt zapobiega wchodzeniu w ściany. Założenie jest takie, że jeżeli jesteśmy więcej niż 5 pikseli pod ziemią to jest to ściana. Zawarłem w nim też skrypt umożliwiający parkour (pozwalający odbić się od ściany).
4. Teraz jeszcze tylko skrypty na skakanie i spadanie, a wyglądają one następująco:zmień [vY v] o (-1) // spadanie
zmień y o (vY)
jeżeli <dotyka [ground v] ?> to // dotykamy ziemii, nie musimy już dalej spadać
zmień y o ((vY) * (-1))
ustaw [vY v] na [0]
zmień y o (-1)
jeżeli <dotyka [ground v] ?> to // jeśli dotykamy ziemii to możemy skoczyć
jeżeli <<klawisz [up arrow v] naciśnięty?> lub <klawisz [w v] naciśnięty?>> to
ustaw [vY v] na [15]
end
end
zmień y o (1)
end
Skok może być też wyższy. Jeżeli chcesz żeby gracz mógł skakać wyżej to ustawiaj wartość vY na ponad 15.
Dlaczego przed sprawdzeniem, czy klawisz W jest wciśnięty zmieniam y o -1?
Wytłumaczenie jest proste. W przypadku kiedy gracz dotyka ziemi od razu idzie do góry, jeśli więc zaistniała kiedyś sytuacja, że gracz dotyka ziemii to już za chwilę gracz szedł do góry. Sprawdzam więc, czy duszek nie będzie dotykał ziemi 1 piksel niżej.
5. Na koniec pozostaje już tylko śmierć i przewijanie leveli. Załatwia to prosty skrypt, którego jednak nie będę tu opisywał ponieważ każdy potrzebuje trochę inny. Nie mógłbym zadowolić wszystkich.
- AANNTTOONNII
-
1000+ posts
Jak zrobić dobry silnik gry platformowej?
@alexisgamergo9
Nie cytuj takich długich postów. Zamiast tego możesz zwrócić się do mnie małpą. A teraz odpowiedź na twoje pytanie:
Dodaj do projektu duszka, który będzie ranił gracza, mogą to być np. kolce w czerwonym kolorze. Dodaj zmienną hp. Do pętli zawsze dodaj taki skrypt:
I do tego duszka gdzieć indziej daj:
To wszystko.
Nie cytuj takich długich postów. Zamiast tego możesz zwrócić się do mnie małpą. A teraz odpowiedź na twoje pytanie:
Dodaj do projektu duszka, który będzie ranił gracza, mogą to być np. kolce w czerwonym kolorze. Dodaj zmienną hp. Do pętli zawsze dodaj taki skrypt:
jeżeli <<dotyka [raniący duszek v] ?> i <nie <(mutex) = [1]>>> to
nadaj [hurt v]
end
I do tego duszka gdzieć indziej daj:
kiedy otrzymam [hurt v]
ustaw [mutex v] na [1]
zmień [hp v] o (-1)
czekaj (ile chcesz) s
ustaw [mutex v] na [0]
To wszystko.
- alexisgamergo9
-
76 posts
Jak zrobić dobry silnik gry platformowej?
@alexisgamergo9
@AANNTTOONNII a jakto ma wyglądać w sensie co to mutex ten bo niewiem i co to vY vX bo mnie to ciekawii? i dlaczego nie dałeś bloku zawsze