Wie macht man eine unsichtbare Wand in Scratch?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Das Objekt der Wand abfragen, ob sie die bewegten Objekte berührt und dementsprechendes Feedback senden (Liste/Variable/'Sende') oder du nimmst den mathematischen Ansatz (in Liste speichern: Dicke Wand, Punkt A, Punkt B --> Entfernung Punkt zu Gerade [Objekt zu Wand] berechnen)

Nachtrag: Etwas genauere Informationen zu deinem Projekt wären ganz nützlich evtll. auch Screenshots. Nutzt du Scratch 2.0 - Downloadapplikation?


Lionmaster 
Beitragsersteller
 28.05.2020, 11:44

Also ich benutze eigentlich das Programm S4A von Kosmos, das ist aber exakt das gleiche nur, dass man mit dem Programm LEDs und so weiter einschalten kann.

0
ShinyArmageddon  28.05.2020, 11:58
@Lionmaster

Also - das ist jetzt etwas blöd, dass in den neueren Sratch-Versionen unsichtbare Objekte keine Kollisionsabfragen machen können.

Der Ansatz wäre, die beiden Eckpunkte der Wand zu definieren, also z.B. A(-10|-10) und B(46|90).

Dann ergibt sich die Geradengleichung g:x = (-10|-10) + r * (46 - (-10)|90 - (-10))

= (-10|-10) + r * (56|100).

Nun muss man mit dem Lotfußverfahren (benötigt leider viel Rechenaufwand, was bei Scratch nie gut ist, da Programme schnell laggen; man muss nämlich ein Gleichungssystem auflösen und kann nicht einfach so drauflos rechnen) den nächsten Punkt zum Objektpunkt C berechnen:

https://www.youtube.com/watch?v=mdtJjvsYdQg (Da wir im 2-dimensionalen Raum sind, kann man einfach die 3. Koordinate konstant setzen - also auch gleich weglassen)

Nun den Abstand von diesem Lotpunkt D zu C berechnen: https://www.youtube.com/watch?v=gjtQcIG1B2c

Wenn dieser Abstand kleiner ist, als die Dicke der Wand und die Dicke r des Objektes addiert [in diesem Fall hätte man eine kreisförmige Hitbox mit dem Radius r], dann kollidieren die Objekte. WICHTIG: Ist das r der Geradengleichung kleiner 0 oder größer 1 stattdessen mit 0 oder 1 rechnen.

0
ShinyArmageddon  28.05.2020, 12:01
@ShinyArmageddon

Alternativ kann man auch einfacher programmieren und dafür mehr Rechenaufwand in Kauf nehmen: Gleiches Verfahren, nur dass r nicht im Gleichungssystem bestimmt wird, sondern die Kollisionsabfrage einfach ununterbrochen für verschiedene r geschieht. Also erst 0,01, dann 0,02, dann 0,03 [...] dann 0,99, dann 1,00 und dann wieder bei 0 beginnend

0

Du gehst unter Effekte ( Die findest du unter Looks, also die lila Blöcke ) und wählst den Ghost Effekt ( auf deutsch glaube ich Durchsichtigkeit) aus und stellst diesen auf 100% und fügst in dein Skript für die Wand ein