Archiv verlassen und diese Seite im Standarddesign anzeigen : "Felsen auf Schalter schieben-Rätsel!"
Nunja ich will wissen wie es geht das etwas passiert wenn man Event A mit Event B kolidieren lässt bestes Beispiel dieses Rätsel bei Zelda wo ein Schalter eine Tür öffnet wenn Link auf den Schalter geht, geht die Tür auf wenn er allerdings wieder runter geht schließt sich die Tür also muss einen schweren Gegenstand schieben damit die Tür offen bleibt.
Sowas sähnliches will ich umsetzen.
Allerdings würde es mir bei vielen anderen sachen helfen wie z.b ein Wettrennen oder so.
Sgt. Pepper
26.12.2007, 21:44
Man überprüft ob Objekt A die gewünschten Koordinaten hat. In diesem Beispiel sind das die Koordinaten von Objekt B.
In Makercode umgesetzt bedeutet das:
Event1 [Parallel Process]:
Change Variable X1 - Objekt A - X-Coordinate
Change Variable Y1 - Objekt A - Y-Coordinate
Change Variable X2 - Objekt B - X-Coordinate
Change Variable Y2 - Objekt B - Y-Coordinate
Fork Condition: if X1 == X2
Fork Condition: if Y1 == Y2
=> Folgen der erfüllten Bedingung
Etc. Wenn man will, dass der Schalter ein Taster ist, also dass die Kiste drauf liegenbleiben soll, kann man noch einen Else Case definieren für die beiden Bedingungen am Ende des Events, indem die Folgen der erfüllten Bedingung rückgängig gemacht werden (zB. die Tür die auf und zu geht (Der Switch der aus und an geht)).
Es gibt sicher häufig auch den Fall, dass das Objekt unter dem, rechts vom oder kurz gesagt direkt neben Objekt B liegen muss.
In diesem Fall muss man folgendes machen:
Event1 [Parallel Process]:
Change Variable X1 - Objekt A - X-Coordinate
Change Variable Y1 - Objekt A - Y-Coordinate
Change Variable X2 - Objekt B - X-Coordinate
Change Variable Y2 - Objekt B - Y-Coordinate
Change Variable DiffX set Variable X1
Change Variable DiffX - Variable X2
Change Variable DiffY set Variable Y1
Change Variable DiffY - Variable Y2
Fork Condition: if DiffX < 0
Change Variable DiffX * -1
Fork Condition: if DiffY < 0
Change Variable DiffY * -1
Fork Condition: if DiffX = 0
Fork Condition: if DiffY = 1
=> Folgen der erfüllten Bedingung
Fork Condition: if DiffX = 1
Fork Condition: if DiffY = 0
=> Folgen der erfüllten Bedingung
Laienhaft Mathematisch ausgedrückt:
Der Betrag der Differenzen zwischen den Koordinaten der Objekte A und B muss zur Erfüllung der Bedingung auf einer der Achsen 0 und auf der anderen 1 Betragen. Korrigiert
Heute mal was ausführlicher.
Ok ich bin leider noch ein blutiger anfänger und habe mich noch nicht so richtig mit koordinaten auseinander gesetzt. Allerdings habe ich mal den code von dir oben versucht.
Als Test bedingung habe ich einen sound abspielen lassen.
Als ich getestet habe kam der Sound immer wenn der Stein auf den Schalter ist, wenn er in waagerechte richtung des Schalters liegt und wenn er in horizontaler richtung des Schalters liegt.
Aber ich möchte das er nur auf den Schalter liegt.
Ok vieleicht ist die antwort schon vieleicht in einen der Codes
Aber ich bin zu doof dafür es rauszukriegen.
Du könntest mir ja kurz erklären was ich falsch gemacht haben könnte.
Kann dir auch Screenshot schicken wenn du danach verlangst.
Du musst eine Bedingung machen bei der Variable X1 und X2 gleich sein müssen und dann noch eine Bedingung bei der Y1 und Y2 gleich sein müssen.
In der Map muss dann noch ein Event (Paralleler Prozess) sein, bei dem,
wie schon von Sgt. Pepper beschrieben, die die jeweiligen Variable in die richtigen Koordinaten eingestellt werden.
Edit: Schick bitte einen Screenshot
http://img295.imageshack.us/my.php?image=booobyjv9.png
Beim Felsen habe ich nichts bisher gemacht de rlässt sich nur gewöhnlich verschieben. Also nur beim Schalter steht was ist doch richtig oder?
Sgt. Pepper
27.12.2007, 20:42
http://img295.imageshack.us/my.php?image=booobyjv9.png
Das ist so nicht ganz richtig.
Richtig wäre:
http://img168.imageshack.us/img168/9919/scriptdy2.png
Die X und die Y-Koordinaten müssen beide gleich sein.
Ah ok da habe ich wohl nicht richtig hingeguckt.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.