Hallo,
unsere erste Gehversuche mit scratch sind etwas "mystisch".
Sohn und ich haben gleichzeitig ein kleines Spiel zur Übung programmiert. Ein Ball solle einfach nur von einem Schläger zurückgespielt werden und an der Wand abprallen.
Bei mir funktioniert es ( http://scratch.mit.edu/projects/hape42/2045450 ), bei Sohnemann geht ( http://scratch.mit.edu/projects/hape42/2045447 ) der Ball durch den Schläger????
Die Skripte sind bis auf die Farbe identisch. Wir finden den Fehler nicht :-(
Kann uns jemand weiter helfen?
Offline
Ich habe den Fehler gefunden:
Sohnemann hat doch nicht ganz das gleiche im Script drin, wie Vater/Mutter:
Es liegt am Sound abspielen, wenn Ball Objekt paddle berührt wird.
Beim Sohn soll der Sound GANZ abgespielt werden, was eine zeitliche Verzögerung nach sich zieht; während dieser Verzögerung, fliegt der Ball durch Paddle hindurch.
Bei Vater/Mutter spielt der Sound aber ab und das Script geht SOFORT zum nächsten Step weiter, wartet aber nicht das Sound-Abspielen ab.
Offline
Vielen lieben Dank für die schnelle Antwort!
Ein "kleines" Problem habe ich auch noch.
Ähnlich wie bei "break out" möchte ich, dass getroffene Steine erst ihr Aussehen ändern und dann verschwinden.
Dafür habe ich für jeden Stein eine Variable eingeführt die bei jeder Berühung hochgezählt wird.
Und der Stein soll, je nach Variablenwert, sein Aussehen ändern. Tut er aber nicht :-(
Habt ihr ne Idee?
break out
Offline
Dazu empfehle ich, bei jedem Objekt, welches getroffen werden kann, eine OBJEKT-EIGENE Variable zu erstellen.
Das bedeutet: Wenn du eine neue Variable erstellst, setze den Haken um, dass diese Variable nur für dieses eine Objekt gilt.
Wenn du das tust, kann jedes Objekt seine eigene Variable abfragen und diese *Pro-Objekt-Variablen* dürfen jeweils den gleichen Namen haben.
Ich bevorzuge dabei immer den Namen n als Zähler. Das ist schön kurz im Script.
(Das erlaubt dir, ein Objekt fix und fertig zu scripten und dann einfach zu kopieren; alle kopierten Objekte sind dann völlig identisch und funktionieren dennoch individuell.)
Am Schluss fügst du bitte noch ein, dass bei jeder Änderung von n ein neues Kostüm benutzt werden soll, welches du natürlich pro höheres n auch anders aussehen lässt, bevor das Objekt zuletzt unsichtbar wird, weil es gänzlich abgeschossen wurde.
EDIT:
Als ich den Text schrieb, hatte ich noch die alte erste Version vom Vorabend angeschaut, nicht die neueste Version.
EDIT 2:
Falls du meinem Vorschlag hier folgen solltest, werden deine Variablen Treffer 1 bis 3 in der jetzigen Form komplett überflüssig.
EDIT 3:
Von den Objekten geht je Treffer noch ein *SENDE TREFFER*- Befehl zum Ball, dass der Ball weiss, wann er seine Bewegung zu korrigieren hat.
EDIT 4:
Das größte Problem ist die Richtungsänderung, die immer dann falsch errechnet wird, wenn die Kollision des Balles am Objekt nicht unterschieden wird.
Nehmen wir an, Der Ball kommt mit real 320° (also 40° vor oben) an, das heisst, er fliegt von unten rechts schräg nach oben links.
Trifft er ein Objekt nun an der Unterseite, müsste der Abprallwinkel umgekehrt werden, auf neu 40° nach 180°, ...also 220°.
Anders ist es, trifft er das Objekt an dessen rechter Seite, dann würde der richtige Abprallwinkel doch wohl eher 40° nach oben sein müssen, also 40°.
Eine Lösung für das Problem sehe ich nur, wenn die Objekte an ihren Seitenrändern eine geringfügig andre Farbe im Kostüm haben, als an den Seiten oben und unten.
Diese andre Farbe lässt es zu , dass der Winkel beim Abprallen korrekt errechnet wird.
Der Ball fliegt dann hoffentlich nicht mehr (scheinbar) durch ein Objekt hindurch.
Trifft der Ball aber ganz exakt die Eckpunkte der Objekte (neue Farbe) dann könnte der Ball direkt 180° kehrum machen :-)
Last edited by Buddy60 (2011-09-25 06:39:55)
Offline
ohje, hab ich euch jetzt verschreckt ?
keine rückmeldung mehr, wie es läuft ?
oder ist jetzt alles paletti und ihr seid voll im scratch-entwickler-fieber ?
:-)
Offline