Ich bin gerade dabei, ein isometrisches Spiel von Grund auf neu zu schreiben, und ich würde gerne wissen, wie / ob ich Lichter und Schatten hinzufügen kann.
Der Code , den ich bisher haben kann hier gefunden werden , aber es sollte die genug sein zu wissen, gerade jetzt , die Karten sind einfacher 3D - Arrays von Wahr / Falsch - Wert . Hier ist eine Aufnahme der Umgebung:
Wenn es eine einschichtige Tilemap wäre, wäre es einfach. Ich kann das einfache Raycasting in 2d verstehen, das erforderlich ist.
Da meine Karten jedoch mehrere Höhenstufen sowie höhlenartige Bereiche haben, weiß ich nicht wirklich, wie ich überzeugende Schatten dafür machen soll. Vielleicht ist eine Blocklösung der einzig realistische Weg?
Antworten:
Kann ich empfehlen, zuerst 2D-Schatten zum Laufen zu bringen, auch wenn dies nur für das Level gilt, auf dem sich Ihr Avatar gerade befindet? Es wird einfacher sein, den Code auf diese Weise zu betrachten und zum Laufen zu bringen.
Ich habe Schatten in 2D-Kachelkarten auf verschiedene Arten implementiert. Eine von Eric Lippert bei Microsoft beschriebene Shadowcasting-Methode funktioniert recht gut.
Und der andere Weg, den ich selbst gemacht habe, als ich mir so etwas zum ersten Mal angesehen habe, war, die sichtbaren Kacheln und Kachelkanten orthogonal zu fegen und Kanten (und möglicherweise Ecken iirc) zu erzeugen, die die Szene mit der geringsten Anzahl von Kanten beschreiben. Sie können dann versteckte Kanten entfernen und benutzerdefinierte Schattenfunktionen wie vertiefte Schatten erstellen, wenn Sie ein wenig Wand anzeigen möchten. Erstellen Sie dann Ihre Schattengeometrie (projektives Schattenwerfen?) Und rendern Sie sie darüber.
Aber wenn ich versuche, diese Idee in 3D umzusetzen, wird es einfacher, sie in 3D zu machen. Während die von Eric Lippert beschriebene Methode vermutlich in 3d konvertiert werden könnte. Aber ich denke, Sie werden feststellen, dass es teuer ist, es in 3D zu machen. Vielleicht sehen Sie sich auch den Quellcode für Brogue an. Es kann eine effizientere Implementierung für 2D-Sichtbarkeit / Schattenwurf haben.
Viel Glück.
quelle