Discuss Scratch

profmin
New Scratcher
1 post

spadanie z platformy

Potrzebuje pomocy. nie umiem zrobić tak by mój duszek opuszczając platformę spadał. jak ją opuszcza to po prostu lata, bo jak próbuję zrobić trzeci
program dzięki któremu duszek będzie spadał to ten program nie działa. to wygląda tak:
kiedy kliknięto zieloną flagę
zawsze

jeżeli <> to
powtarzaj aż <>
zmień y o ()
end
profmin
New Scratcher
1 post

spadanie z platformy

spróbuję to naprawić.
kuba5509
Scratcher
100+ posts

spadanie z platformy

Według mnie powinieneś zrobić coś takiego:

kiedy kliknięto zieloną flagę
ustaw [moja zmienna v] na [0]
zawsze
jeżeli <nie <dotyka koloru [#ff0000] ?>> to
powtarzaj aż <dotyka koloru [#ff0000] ?>
zmień y o ((3) + (moja zmienna))
zmień [moja zmienna v] o (0.3)
end
ustaw [moja zmienna v] na [0]
end
end

To powinno zadziałać. Skrypt wykrywa, czy duszek dotyka specyficznego koloru. Jeżeli nie dotyka, duszek porusza się w dół w między czasie przyspieszając, do momentu aż dotyka wybranego koloru.

Jeżeli [ktoś nie przestrzega zasad forum v] ::events hat
powiedz [Nie] ::looks

ZOBACZ NA MÓJ PROFIL!

Opisek
Scratcher
1000+ posts

spadanie z platformy

Są w tym aczkolwiek dwa problemy:

1. Jest możliwe, że duszek spada tak szybko, że teleportuje się przez platformę.
2. Jest możliwe, że duszek wpadnie glęboko w środek platformy.

Zamiast więc zmieniać zmienną y o duże ilości, możemy zmianiać ją tylko 1 piksel na raz, żeby nie przelecieć przez jakąś platformę.

Żeby zachować wizualną “prędkość” spadania, można użyć własnego bloczka bez odświeżania ekranu:

definiuj zmień y o (ilość) do następnej platformy
powtórz (zaokrąglij (ilość)) razy
jeżeli <nie <dotyka koloru [#ff0000] ?>> to
zmień y o ((zaokrąglij (ilość)) / ([wartość bezwzględna v] z (zaokrąglij (ilość))))
end
end

Duże skoki zastępujemy teraz naszym nowym bloczkiem:
kiedy kliknięto zieloną flagę
zawsze
jeżeli <nie <dotyka koloru [#ff0000] ?>> to
ustaw [spadanie v] na [0]
powtarzaj aż <dotyka koloru [#ff0000] ?> // spadaj w dół do platformy
zmień [spadanie v] o (-0.3)
zmień y o (spadanie) do następnej platformy::custom stack
end
end
end

Teraz duszek zawsze się zatrzyma na samym górze platformy.

Bardzo ważne jest, żeby przy tworzeniu tego własniego bloczku zaznaczyć “bez odświeżania ekranu”.

Last edited by Opisek (Sept. 23, 2024 12:46:24)

AndrzejL1
Scratcher
100+ posts

spadanie z platformy

Nie wiem czy to ma sens, ale jak człowiek skacze platformach to widzi te platformy. A gdyby tak duszkowi powiedzieć na początku, gdzie jest ta platforma? Wtedy nie musiałby ciągle sprawdzać kolorów, bo znając swoją pozycję i współrzędne “gruntu” wiedziałby czy ma spadać czy nie i to z dowolną prędkością.

say [Łatwiej zrobić projekt, niż wymyślić jak ma wyglądać podpis]
Opisek
Scratcher
1000+ posts

spadanie z platformy

Jasne, to też jest możliwe, ale budowanie poziomów staje się bardziej skomplikowane, szczególnie jeżeli platformy wizualnie to dalej osobne duszki, ponieważ współrzędne muszą się zgadzać ze sobą idealnie.

Co ma więcej sensu, to generowanie/rysowanie platform na bazie tych samych koordynatów, które duszek używa, żeby sprawdzić jak daleko musi spadać.

Jeden zaawansowany problem który się pojawia, to jak szybko sprawdzać platformy pod duszkiem, jeżeli mamy ich bardzo dużo w kilku listach. Do tego przydałaby się dwuwymiarowa hash-mapa. Nie martwiłbym się jednak tym problemem w małych projektach. Jeśli zagadniene o hash-mapach brzmy interesująco, to wypuszczę może jeszczy w tym roku projekt edukacyjny o tych strukturach danych

Powered by DjangoBB