[Andorra 2D] Licht
spacer
Autor Nachricht
knittel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2007
BeitragVerfasst: Di 13.09.11 18:19 
Hallo allerseits,
Ich will die Andorra Engine benutzen um ein 2D-Rollenspiel zu entwickeln. Das ganze soll ziemlich dunkel ausfallen.
Ich wollte es so machen, dass grundsätzlich erstmal alles dunkel ist und nur ein Lichtstrahl von der Taschenlampe des Spielers ausgeht und Umgebung beleuchtet.

Meine Grundidee war es erstmal alles zu zeichen und dann einen schwarzen Kasten drüber male, welchen ich dann, da wo das Licht ist durchsichtig mache. Das Problem ist ich, weis zwar wie ich berechnen könnte, wie hell es an einem Punkt seien soll. Das eigentliche Problem ist, ich weis nicht wie ich aus dem schwarzen Kasten wieder die Farbe "subtrahiere".

Ich wäre erfreut, wenn jemand eine Lösung kennt.
Danke im voraus.

_________________
"Wir können nicht fliehen!" "Wieso nicht?" "Sie haben mir die Schnürsenkel zusammengebunden!" "Die Schweine."
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1040
Erhaltene Danke: 27

Windows 7 Prof. , UBUNTU
RAD Studio 2010 Prof.
BeitragVerfasst: Di 13.09.11 19:02 
Soweit ich weiß, unterstützt Andorra 2D Licht von Haus aus.

andorra.sourceforge....sses.TAd2dLight.html
LG!

_________________
Ich nutze EdgeMonkey, weil ich auf schwules Pink stehe :-*
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 724
Erhaltene Danke: 53

Win XP professional, Win 7 Professional x64, Ubuntu
Delphi 5, Delphi 2005 Personal, Delphi 2006, Delphi XE, C++ Builder 5, PHP, SAP R/3
BeitragVerfasst: Di 13.09.11 21:00 
Hi,
auf Anhieb wüsste ich jetzt nicht, wie man den Lichtkegel darstellt, aber die Andorra Engine kommt mit Licht gut klar.
Zu erst müsstest du in deiner Render Routine die Beleuchtung einschalten und ein dunkeles Licht definieren. Die Elemente, die gezeichnet werden sollen, müssen in ihrer Zeichenroutine dann die Beleuchtung wieder ausschalten oder ein helles Licht hinzufügen. Ich müsste mir das im Detail aber selbst mal anschauen,

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure Render;
begin
{...}
AdDraw.BeginScene;

AdDraw.Options := AdDraw.Options + [aoLight];
AdDraw.Scene.AmbientColor := Ad_ARGB(255, 50, 50, 50);
{...}

AdDraw.Options := AdDraw.Options - [aoLight];
AdDraw.EndScene;
{...}
end;


Vielleicht hilft dir das ja als Ansatz weiter. Wenn ich eine neue Idee dazu habe, gebe ich dir Bescheid.


edit:
Mir ist gerade eine Idee für eine unsaubere Lösung gekommen :-D
Wenn du deinen Lichtkegel als Grafik vordefinierst, dann kannst du eine Klasse von TImageSpriteEx ableiten.
Dort nutzt du dann die Methode SetAngle(val : double) um den Kegel zu drehen.
Die DoDraw Methode überschreibst du mit

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
procedure TLichtkegel.DoDraw;
begin
AdDraw.Options := AdDraw.Options - [aoLight];
inherited DoDraw;
AdDraw.Options := AdDraw.Options + [aoLight];
end;

Sprich: Vor dem Zeichnen Licht aus, danach wieder ein.
Jetzt könnte man die Kollisionsabfrage nutzen, um andere Sprites, die sich innerhalb des Kegels befinden auch sichtabr zu machen.

_________________
Delphi: XE - OS: Windows 7 Professional x64
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Niko S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 557
Erhaltene Danke: 9

Win 7, Ubuntu
Lazarus, Turbo Delphi, Delphu 7 PE
BeitragVerfasst: Di 13.09.11 21:16 
Andorra hat tolle Beispiele mit Sourcecode.
Auch mit Licht und Shading. Musst du dir nur mal anschauen. Oder Maskieren.
Eines von beiden lässt sich für deine Zwecke gut verwenden ;)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
knittel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2007
BeitragVerfasst: Do 15.09.11 16:49 
Vielen Dank. Ihr habt mir alle sehr weitergeholfen. :)

_________________
"Wir können nicht fliehen!" "Wieso nicht?" "Sie haben mir die Schnürsenkel zusammengebunden!" "Die Schweine."
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home