Ich habe einen Rubbelkarteneffekt entwickelt. Ich arbeite jetzt am Belohnungssystem. Meine Frage ist also, wie ich fortfahren und eine Logik implementieren soll, die mich wissen lässt, dass das Objekt hinter der Rubbelkarte jetzt sichtbar ist.
7
Antworten:
Ich stimme der Antwort von Superdoggy zu, aber ich glaube, es gibt einen besseren Weg, dies zu tun. Wenn Sie den Bereich der Rubbelkarten-Kollisionsbox kennen, den Sie anzeigen möchten, können Sie Folgendes tun: Ermitteln Sie die Gesamtpixelmenge des Objekts (Breite * Höhe). Wenn die Maus gedrückt wird: Überprüfen Sie die Pixel um die Maus in einem Radius Ihrer Wahl. Wenn sie sich im Bereich des Objekts befinden und das Pixel derzeit undurchsichtig ist, setzen Sie sie auf transparent und ++ auf einen Zähler für "aufgedeckte Pixel". Um zu überprüfen, wie viel von der Rubbelkarte derzeit sichtbar ist, teilen Sie einfach "Aufgedeckte Pixel" durch "Gesamtpixel".
Leider weiß ich nicht, wie man in Unity programmiert, also hier ein Pseudocode!
quelle
Ich würde alle Alpha-Werte der Rubbelkartenpixel addieren, die die Objektpixel überlappen. Wenn dann "A" <ein Wert ist, können Sie davon ausgehen, dass der Benutzer genügend Pixel gelöscht hat, um das Objekt sehen zu können.
Ein wirklich gutes Tutorial zur Kollisionserkennung pro Pixel in C # finden Sie hier: Linkylink . Es ist für C # mit XNA gemacht, aber das Konzept ist nicht allzu schwer an C # mit Unity anzupassen, würde ich annehmen. Ändern Sie den Code einfach ein wenig, um die Alpha-Werte kollidierender Pixel zu zählen, anstatt nur nach Kollisionen zu suchen.
Hoffe das hilft!
quelle