Discuss Scratch

Erixo
Scratcher
100+ posts

Scrollowana gra?

UWAGA! ZAKTUALIZOWAŁEM DELIKATNIE PORADNIK
OD TERAZ DOŁĄCZYŁEM TAKŻE PRZYKŁAD
kliknij w link wyżej by go zobaczyć ^^^^^^^^^

Pewnie masz dylemat, jak zrobić scrollowaną grę. Wbrew pozorom jest to BARDZO łatwe. Oto co potrzebujesz w skryptach gracza:
kiedy kliknięto zieloną flagę
ustaw [X v] na [0]//Resetowanie pozycji gracza w osi X
ustaw [Y v] na [0]//Resetowanie pozycji gracza w osi Y
kiedy kliknięto zieloną flagę
idź do x: (0) y: (0)
zawsze //Proste pętle ruchu
jeżeli <klawisz [ w v] naciśnięty?> to
zmień [Y v] o (5)
end
jeżeli <klawisz [ s v] naciśnięty?> to
zmień [Y v] o (-5)
end
jeżeli <klawisz [ a v] naciśnięty?> to
zmień [X v] o (5)
end
jeżeli <klawisz [ d v] naciśnięty?> to
zmień [X v] o (-5)
end
end
Okej. Gracz już gotowy. Teraz czas na obiekty statyczne, które nie będą przemieszczane same z siebie.
//w ich skryptach napisz po prostu:
kiedy kliknięto zieloną flagę
zawsze
Idź do x:((X) + (liczba w osi x)) y:((Y) + (liczba w osi y)) //Obiekt będzie podążał za wskazaną pozycją
End
//Liczba w osi x - Pozycja obiektu w osi X - Pionowo
//Liczba w osi y - Pozycja obiektu w osi Y - Poziomo
Później dodam elementy dynamiczne, jak będę miał czas
PO EDYCJI 2 LATA PÓŹNIEJ
Dokładnie nie wytłumaczę jak możesz zrobić obiekt dynamiczny ale postaram się to streścić:
(myX) //Stwórz zmienną prywatną (jest to dostępne do wyboru podczas jej tworzenia)
(myY) //Stwórz zmienną prywatną (jest to dostępne do wyboru podczas jej tworzenia)
Zmodyfikuj skrypt który pokazałem chwilę wcześniej na ten:
kiedy zaczynam jako klon
zawsze
Idź do x:((X) + (myX)) y:((Y) + (myY)) //Obiekt będzie podążał za wskazaną pozycją
End
Zmienna prywatna to taka zmienna która niezależnie od tego w którym klonie jej używasz będzie miała inną wartość. Jeśli zmienisz np. myX na 1, tylko w klonie 1, to reszta klonów dalej będzie miała wartość np. 0 (W przypadku zwykłych zmiennych, tak zwanych globalnych, reszta klonów też widziałaby zmienną myX jako 1)
Teraz, jedyne co musisz robić to modyfikować te dwie zmienne w klonach (jeśli używasz klonów i chcesz nimi poruszać, np. lecąca ognista kula), np. w taki sposób:
kiedy zaczynam jako klon
zawsze
powtórz (5) razy
zmień [myX v] o (5)
end
powtórz (5) razy
zmień [myX v] o (-5)
end
end

Jeśli poprawnie stworzyłeś zmienne myX i myY jako zmienne prywatne to niezależnie od ruchu bohatera, obiekt będzie poruszał się 25 pikseli w prawo i 25 pikseli w lewo.

Zapewne nie dopiszę tu już za wiele

Last edited by Erixo (April 20, 2020 13:09:19)


AANNTTOONNII
Scratcher
1000+ posts

Scrollowana gra?

Idź do x: jest czerwone. Proszę napraw to.
Dodaj opisy. bo niekażdy początkujący zrozumie.
MentolMen
Scratcher
1000+ posts

Scrollowana gra?

W ostatnim skrypcie można zastąpić “+” minusem
AANNTTOONNII
Scratcher
1000+ posts

Scrollowana gra?

Byłoby nawet lepiej
Erixo
Scratcher
100+ posts

Scrollowana gra?

AANNTTOONNII wrote:

Idź do x: jest czerwone. Proszę napraw to.
Dodaj opisy. bo niekażdy początkujący zrozumie.
Ok no problem
tylko nie pamiętam jak zmienić kolor bloków ;/

Last edited by Erixo (May 16, 2018 13:38:11)


Erixo
Scratcher
100+ posts

Scrollowana gra?

MentolMen wrote:

W ostatnim skrypcie można zastąpić “+” minusem
Oczywiście. Ale jak ktoś już trochę zrozumie to może sam to zamienić, lub jak chce to może też zrobić -400 załóżmy.

MentolMen
Scratcher
1000+ posts

Scrollowana gra?

Nie musisz zmieniać koloru, scratch sam to robi kiedy blok jest prawidłowo skonstruowany. Twój jest źle zrobiony, dlatego czerwony. No wiem, ale można by napomknąć, że można zmieniać kierunek po prostu zmieniając znaku w “czerwonym” skrypcie albo w tym co zmienia x i y
AANNTTOONNII
Scratcher
1000+ posts

Scrollowana gra?

Tak nie powinno być:
(X + (0))
tylko
((X) + (0))
Wyjaśnij jeszcze czym jest liczba w osi x i liczba w osi y
Erixo
Scratcher
100+ posts

Scrollowana gra?

MentolMen wrote:

Nie musisz zmieniać koloru, scratch sam to robi kiedy blok jest prawidłowo skonstruowany. Twój jest źle zrobiony, dlatego czerwony. No wiem, ale można by napomknąć, że można zmieniać kierunek po prostu zmieniając znaku w “czerwonym” skrypcie albo w tym co zmienia x i y
Scratch nie zmienia bloków To plugin scratchblocks

AANNTTOONNII wrote:

Tak nie powinno być:
(X + (0))
tylko
((X) + (0))
Wyjaśnij jeszcze czym jest liczba w osi x i liczba w osi y
No ok. I tak nikt tej dyskusji nie przeczyta

AANNTTOONNII
Scratcher
1000+ posts

Scrollowana gra?

Erixo musisz zrobić X w nawiasie (X), anie X bo wtedy wychodzi tak brzydko
MentolMen
Scratcher
1000+ posts

Scrollowana gra?

Jak nikt jej nie przeczyta to po co robisz ?
AANNTTOONNII
Scratcher
1000+ posts

Scrollowana gra?

Przeczyta….
Na pewno
paczekwmasle
Scratcher
500+ posts

Scrollowana gra?

Erixo wrote:

No ok. I tak nikt tej dyskusji nie przeczyta
nieprawda-ja czytam-bardzo polecam wszystkim scratchersom, dzięki niej nauczyłem się scrollować

podpisano @paczekwmasle
paczekwmasle
Scratcher
500+ posts

Scrollowana gra?

przy wykorzystywaniu tej metody w swojej grze natrafiłem na problem - duszek będący tłem po puszczeniu kursora nie zatrzymywał się, tylko ,,biegł'' dalej. Być może jest to w niektórych przypadkach efekt zamierzony, ale w mojej grze był błędem. Żeby mu zapobiec trzeba dodać jedną drobną modyfikację do skryptu duszku będącym tłem, a mianowicie:

kiedy kliknięto zieloną flagę
zawsze
Idź do x:((X) + (liczba w osi x)) y:((Y) + (liczba w osi y)
ustaw [X] na [0]
ustaw [Y] na [0]

Last edited by paczekwmasle (April 26, 2019 09:01:28)


podpisano @paczekwmasle
Erixo
Scratcher
100+ posts

Scrollowana gra?

paczekwmasle wrote:

przy wykorzystywaniu tej metody w swojej grze natrafiłem na problem - duszek będący tłem po puszczeniu kursora nie zatrzymywał się, tylko ,,biegł'' dalej. Być może jest to w niektórych przypadkach efekt zamierzony, ale w mojej grze był błędem. Żeby mu zapobiec trzeba dodać jedną drobną modyfikację do skryptu duszku będącym tłem, a mianowicie:

kiedy kliknięto zieloną flagę
zawsze
Idź do x:((X) + (liczba w osi x)) y:((Y) + (liczba w osi y)
ustaw [X] na [0]
ustaw [Y] na [0]
Jeżeli zamierzasz używać tła, które się przesuwa, to jesteś na dobrej drodze, ale:
kiedy kliknięto zieloną flagę
zawsze
idź do x: (((X) + (liczba w osi x)) / (3)) y: (((Y) + (liczba w osi y)) / (3))
...//nie możesz tutaj zerować wartości X i Y gdyż otoczenie gracza będzię się za każdym razem przemieszczało do koordynatów 0, 0
end
ewentualnie po prostu zmień tło sceny

testertostera
Scratcher
100+ posts

Scrollowana gra?

Erixo wrote:

paczekwmasle wrote:

przy wykorzystywaniu tej metody w swojej grze natrafiłem na problem - duszek będący tłem po puszczeniu kursora nie zatrzymywał się, tylko ,,biegł'' dalej. Być może jest to w niektórych przypadkach efekt zamierzony, ale w mojej grze był błędem. Żeby mu zapobiec trzeba dodać jedną drobną modyfikację do skryptu duszku będącym tłem, a mianowicie:

kiedy kliknięto zieloną flagę
zawsze
Idź do x:((X) + (liczba w osi x)) y:((Y) + (liczba w osi y)
ustaw [X] na [0]
ustaw [Y] na [0]
Jeżeli zamierzasz używać tła, które się przesuwa, to jesteś na dobrej drodze, ale:
kiedy kliknięto zieloną flagę
zawsze
idź do x: (((X) + (liczba w osi x)) / (3)) y: (((Y) + (liczba w osi y)) / (3))
...//nie możesz tutaj zerować wartości X i Y gdyż otoczenie gracza będzię się za każdym razem przemieszczało do koordynatów 0, 0
end
ewentualnie po prostu zmień tło sceny

A nie można tam dodać warunku? Zawsze -> jeżeli kursor w prawo kliknięty lub kursor w lewo kliknięty… -> idź do
Erixo
Scratcher
100+ posts

Scrollowana gra?

A nie można tam dodać warunku? Zawsze -> jeżeli kursor w prawo kliknięty lub kursor w lewo kliknięty… -> idź do
Dużo warunków = duże opóźnienia
ten skrypt jest lepszy - przy zatrzymywaniu się na krawędziach zachowuje skalę odległości

paczekwmasle
Scratcher
500+ posts

Scrollowana gra?

looknij sobie w moim projekcie: tam działa

https://scratch.mit.edu/projects/304749402/

Edit: projekt nie udostępniony

Last edited by paczekwmasle (May 11, 2019 12:48:54)


podpisano @paczekwmasle
testertostera
Scratcher
100+ posts

Scrollowana gra?

paczekwmasle wrote:

looknij sobie w moim projekcie: tam działa

https://scratch.mit.edu/projects/304749402/

Oki, jak działa, to nie ma co kombinować
paczekwmasletest
Scratcher
16 posts

Scrollowana gra?

A czy ten sposób nie jest lepszy? (prostszy, a działa tak samo dobrze):
dać po prostu do duszka będącego tłem taki skrypt:
kiedy kliknięto zieloną flagę
idź do x: (0) y: (0)
zawsze
jeżeli <klawisz [a] naciśnięty?> to
zmień x o (10)
end
jeżeli <klawisz [d] naciśnięty?> to
zmień x o (-10)
end
jeżeli <klawisz [w] naciśnięty?> to
zmień y o (-10)
end
jeżeli <klawisz [a] naciśnięty?> to
zmień y o (10)
end
end
w tym projekcie działa znakomicie: https://scratch.mit.edu/projects/313270769/

Powered by DjangoBB