2.1 Links en rechts bewegen
Tijd voor beweging. Met start_physics() kun je een vorm laten bewegen.
Bekijk de code hieronder. Wat denk je dat er gebeurt?
Klik hier voor het antwoord.
De bal beweegt naar rechts en stuitert tegen de muur.
coderius-play maakt automatisch onzichtbare muren aan de randen van het scherm. Vormen stuiteren hier standaard tegenaan.
Wat gebeurt hier?
import play
cirkel = play.new_circle()
cirkel.start_physics(obeys_gravity=False, x_speed=60)
- Regel 3:
Een gewone cirkel, zoals in hoofdstuk 1. Zonder de regel eronder blijft hij stilstaan.
- Regel 4:
Zet de fysica aan. Twee dingen stel je hier in:
- obeys_gravity=False: de zwaartekracht staat uit, dus de bal valt niet naar beneden
- x_speed=60: de bal beweegt met snelheid 60 naar rechts
Onderzoek
Probeer eens de volgende aanpassingen en kijk wat er verandert:
- Wat gebeurt er als je
x_speedop0zet? - Wat als je
obeys_gravity=Falseweghaalt (of opTruezet)?
Klik hier voor het antwoord.
- Met
x_speed=0staat de bal stil (er is geen horizontale snelheid). - Met
obeys_gravity=Truevalt de bal naar beneden door de zwaartekracht.
Opdracht 2.1.a: De andere kant op
a) Laat de bal met snelheid 100 naar links bewegen.
Klik hier voor een tip.
Positief is naar rechts, negatief is naar links.
Klik hier voor de oplossing.
import play
cirkel = play.new_circle()
cirkel.start_physics(obeys_gravity=False, x_speed=-100)
b) Laat de bal schuin naar de rechterboven hoek bewegen.
Klik hier voor een tip.
Naast x_speed bestaat er ook y_speed.
Klik hier voor de oplossing.
import play
cirkel = play.new_circle()
cirkel.start_physics(obeys_gravity=False, x_speed=100, y_speed=100)
Een tekst in de weg
De bal hieronder rijdt naar rechts, en in het midden van het scherm staat een tekst. Wat denk je dat de bal doet als hij bij de tekst komt?
import play
bal = play.new_circle(x=-300, radius=20)
bal.start_physics(obeys_gravity=False, x_speed=60)
tekst = play.new_text("Hallo", font_size=60)
Klik hier voor het antwoord.
De bal stuitert terug tegen de tekst, alsof het een muur is. In coderius-play
is elke vorm massief: een vierkant, een cirkel en ook een tekst. Dat geldt al voordat je start_physics() aanroept, en ook voor een vorm
die je onzichtbaar maakt met transparency=0.
Wil je dat de bal er doorheen gaat, maak de tekst dan een sensor:
tekst.start_physics(can_move=False, sensor=True)
Een sensor merkt nog wel dat de bal hem raakt, maar houdt hem niet tegen. Hoe dat werkt, staat in 2.3 Fysica-eigenschappen.
- In 5.1 Wachten in je spel gebruik je opnieuw
x_speedom een bal te laten bewegen — en zie je waaromtime.sleep()daar problemen veroorzaakt. - In Pong (eindproject) gebruik je
x_speedény_speedom de bal diagonaal te laten stuiteren.