Discuss Scratch

Bernard_o
New Scratcher
7 posts

Position von Klonen verwenden

Hallo zusammen,

ich habe mehrere Quadrate (Spielfelder) als Klone meines Original-Quadrats erstellt (Das Original-Quadrat ist verborgen).
Nun möchte ich eine andere Figur auf eines der Quadrate ziehen und es soll dann exakt mittig auf diesem Quadrat einschnappen, auch wenn ich es ein bisschen schief abgelegt habe.

Naheliegend wäre das Skript:
falls <wird [Quadrat] berührt?> dann
gehe zu x: (x-Position von Quadrat) y: (y-Position von Quadrat)
end

Das funktioniert im Prinzip, aber die Figur schnappt immer auf dem Original-Quadrat ein - nicht auf dem Klon, wo ich die Figur ablegen will.
Wie kann ich erreichen, dass meine Figur die Posotion des Klons annimmt, auf das ich sie gezogen habe ?
pantherkater
Scratcher
9 posts

Position von Klonen verwenden

Der Klon ist eigentlich gar keine Figur . Aber du könntest die Figur Ball nehmen Sie an die gewünschte stelle tun und ganz wegradieren . Dann kannst du bei der Figur sowas in den Skript einbauen :
gehe zu [Ball ]

Vielleicht funktioniert es dann . Viele Grüße pantherkater .
Bernard_o
New Scratcher
7 posts

Position von Klonen verwenden

pantherkater wrote:

Der Klon ist eigentlich gar keine Figur . Aber du könntest die Figur Ball nehmen ….
Ja, aber dann verliere ich die Vorteile von Klonen, wo ich unter
Wenn ich als Klon entstehe
das Verhalten meiner Klone nur einmal definieren brauche, auch wenn ich dann zwanzig Klone erstelle.
Dann müsste ich für jeden meiner 20 Klone noch einen unsichtbaren Hilfs-Ball erstellen plus zgehöriges Skript.
KROKOBIL
Scratcher
100+ posts

Position von Klonen verwenden

Ich glaube, so geht es am einfachsten:

Für die Spielfelder:
Wenn ich als Klon entstehe
wiederhole fortlaufend
falls <wird [Figur v] berührt?> dann
setze [Feld x v] auf (x-Position)
setze [Feld y v] auf (y-Position)
end
end

Für die Figur:
falls <wird [Spielfeld v] berührt?> dann
gehe zu x: (Feld x) y: (Feld y)
end

Alternativ kannst du auch eine Liste mit den Positionen von allen Spielfeldern erstellen und in der Figur durch die Liste gehen und zur nächstgelegenen Position gehen:

Für die Spielfelder:
Wenn die grüne Flagge angeklickt
lösche alles aus [Felder v] :: list
Wenn ich als Klon entstehe
füge (x-Position) zu [Felder v] hinzu
füge (y-Position) zu [Felder v] hinzu

Für die Figur:
falls <wird [Spielfeld v] berührt?> dann
gehe zum nächsten Feld
end
Definiere gehe zum nächsten Feld
setze [index v] auf [1]
setze [kleinster Abstand v] auf [Infinity]
wiederhole ((Länge von [Felder v] :: list) / (2)) mal
Abstand ((x-Position) - (Element (index) von [Felder v] :: list)) ((y-Position) - (Element ((index) + (1)) von [Felder v] :: list))
falls <(Abstand :: variables) < (kleinster Abstand)> dann
setze [kleinster Abstand v] auf (Abstand :: variables)
gehe zu x: (Element (index) von [Felder v] :: list) y: (Element ((index) + (1)) von [Felder v] :: list)
end
ändere [index v] um (2)

Definiere Abstand (x Abstand) (y Abstand)
setze [Abstand v] auf ([Wurzel v] von (((x Abstand) * (x Abstand)) + ((y Abstand) * (y Abstand)))) // Satz des Pythagoras

Powered by DjangoBB