Maniac Mansion Mania Forum
MMM-Werkzeugkiste => Technik => Thema gestartet von: 1mal_volltanken am 04. März 2010, 11:10:31
-
Hallo Leutz!
Wollt mal fragen, wie Ihr das technisch umsetzen würdet, wenn Ihr solche Puzzle-Rätsel macht (wo man bspw. die Einzelteile eines Bildes richtig zusammensetzen muss), so dass man auf ner Fläche die Einzelteile überall hinlegen kann und auch drehen und wenden kann. Eben im Stil wie Black Mirror.
Die Möglichkeit, dies mit der simplen ObjectOn/ObjectOff-Methode scheidet ja wohl aus, weil man ja erstens nur eine begrenzte Anzahl von Objekten hat und zum anderen es ja schon von Arbeitsaufwand gar nicht umsetzbar ist.
Vielleicht hat sich ja jemand von Euch schon mal an so etwas versucht.
BG
der Volltanker
-
(ich hab black mirror nie gespielt, darum kann ich jetzt nicht garantieren dass sich meine lösung mit diesem spiel deckt ;) )
mach soviele objekte wie es teile gibt und ordne sie rastermäßig an
mach für jeden teil ein inventar objekt (oder ein objekt im spielbereich)
mach mit hotspots den raster über den objekten
die einzelteile importierst du als sprite
macht der user "benutze puzzle-teil mit hotspot", setzt du dann das bild des darunter liegenden objekts auf das gewünschte sprite
bei jeder änderung eines objekts musst du dann nur noch überprüfen, ob die einzelnen objekte das richtige sprite haben
sind die puzzleteile nicht gleich groß, musst du die objekte+hotspots einfach entsprechend anordnen
und gegebenenfalls mit den X Y eigenschaften beim setzen des sprites verschieben
wenn du drehen willst, brauchst du ein eigenes sprite für jede mögliche ausrichtung des teils
macht der spieler "drehe teil", tauscht du hier einfach das sprite aus (geht auch im inventar durch austauschen des inventory-item)
das ist halt nur ein leitfaden, programmieren darfst du es selber ;)
-
musst du aber nicht, die arbeit hat sich schon wer anderer angetan. ;)
http://www.bigbluecup.com/yabb/index.php?topic=35020.0
-
Das ist ja schon mal ganz klasse. ;) Dann weiss ich ja, wo ich sowas finden kann. ;)
BG
der Volltanker
-
Noch ein bisschen Theorie:
Man kann sowas gänzlich ohne Objekte programmieren und ist auch nicht auf 90°-Drehungen festgelegt (Freies Drehen ist auch möglich, allerdings sieht man natürlich, wann ein Teil in Originialposition oder Vierteldrehungen weiter ist ;)).
Damit die Teile einrasten, legt man mittels eines structs bei jedem Teil Zielposition (und -winkel) fest und erlaubt dann beim Plazieren etwas Toleranz.
Aufwendiger wird es, wenn die Teile auch an benachbarten einrasten sollen, obwohl sie noch nicht am richtigen Platz sind.
Ich hab mir das Modul noch nicht angeschaut, es scheint aber recht aufwendig gemacht zu sein.
-
Das Puzzle-Modul ist auf jedenfall zu empfehlen, ein sehr aufwändiges Script, besonders was die Hit-detection angeht. Außerdem ist es sehr leicht zu bedienen (Im Prinzip lässt sich ein ganzes Puzzle mit einer oder zwei Zeilen Code erstellen).