0124 får som hoppar
Spara föregående övning far_i_trappa
som far_som_hoppar
.
Nedan följer instruktioner för hur du får fåret att hoppa. Det är ett enkelt sätt, som har vissa brister. Du kanske kan upptäcka dessa.
Placera fåret på en tegelsten.
Ta bort innehållet i act-metoden.
Kommer du ihåg rörelse från fysiken
Gravitationen nedåt är 10 meter per sekund varje sekund.
Säg att hastigheten uppåt är 50 m/s vid tiden noll.
Varje sekund kommer hastigheten uppåt att minska med 10 m/s.
Tid (s) | Hastighet uppåt (m/s) |
---|---|
0 | 50 |
1 | 40 |
2 | 30 |
3 | 20 |
4 | 10 |
5 | 0 |
6 | -10 |
7 | -20 |
Vad innebär det att hastigheten är negativ efter 6 sekunder? Hur rör sig föremålet nu?
Idé
Man kan hoppa med mellanslag om man står på marken. Hastigheten uppåt får då ett positivt värde till exempel 50 som ovan.
Varje filmruta minskas sedan hastigheten med gravitationen. För enkelhet skull tänker vi oss att en filmruta är en sekund. Förflyttningen blir då lika stor som hastigheten. Tänk på att om hastigheten är positiv uppåt så blir den negativ nedåt.
Förslag på implementation i klassen Sheep
följer nedan.
Klassen Sheep
objektvariabler eller instansvariabler
Lägg till följande objektvariabler
speedVertical som kan innehålla heltal och har startvärdet 0
gravity som har värdet 1
isFalling som har värdet
false
metoden isOnGround
Returnerar true
om fåret är i kontakt med en tegelsten, annars false
.
metoden checkJump
Om space är intryckt och fåret är på marken så sätts speedVertical
till 12 och isFalling
får värdet true
.
metoden move
Om isFalling
har värdet true
flyttas fåret
speedVertical
. Minska fårets y-koordinat medspeedVertical
.speedVertical
minskas medgravity
metoden checkOnGround
Om fåret rör vid en tegelsten så får isFalling
värdet false
annars får isFalling
värdet true
.
metoden act
Anropa metoden checkJump
.
Anropa därefter metoden move
.
Anropa därefter metoden checkOnGround
.