Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / Kriegsnebel lässt Objekte verblassen/verschwinden
- - By Serpens66 (More than 200 posts.) Date 14.03.2015 00:55
Hi,

ich möchte einen langen Beamstrahl aus dem Himmel auf die Erde niedergehen lassen, indem ich das Lichtkegel objekt aus dem Hazardpack verwende und vergrößere.

Das Problem ist nun, dass der Kriegsnebel allen anschein nach Objekte die irgendwie teilweie im Kriegsnebel sind, verblassen bzw. verschwinden lässt, auch wenn sich Teile davon im Sichtbereich befinden.

Meine Vermutung war, dass es von den Offset Koordinaten des Objekts abhängt... weshalb ich die Fkt. ChangeOffset im Lichtkegelobjekt ausgeführt habe, sodass sich der Offset genau in der Mitte des Sichtbereichs befindet (mit GetX() und GetY() überprüft).  Leider ändert das aber nichts an der Darstellung =/  Es hat den Anschein, als würde es trotzdem davon abhängen, wo sich der Anfang des Strahls befindet.
Wenn man ihn recht weit oben erstellt und runterfallen lässt, sieht man auch die Intensitätsänderung. Je näher der Anfang dem Sichtbereich ist, desto stärker wird er gezeichnet.

Habt ihr eine Idee, wie ich das ändern kann? Der Lichtstrahl soll immer mit voller intensität gezeichnet werden.

Hab grad mal geschaut, was passiert, wenn ich BlitMode=1 aus der DefCore nehme. Einmal ist die Farbe etwas anders, aber anstatt zu verblassen wir der Strahl im Kriegsnebel schwarz.
Parent - - By Zapper (More than 500 posts.) Date 14.03.2015 09:46
Es gibt die Kategorie C4D_IgnoreFoW, die genau für solche Sachen ist.

Mach einfach deine DefCore.txt auf und schreib hinter Category= noch | C4D_IgnoreFoW. Wenn das mit dem | in CR noch nicht geht, dann musst du vielleicht per Hand die neue Kategorie hier zusammenklicken
Parent - - By B_E (More than 200 posts.) Date 14.03.2015 12:05
Ich glaube er meint eher diesen Effekt:



Du kannst im zweiten Bild klar durch die Kiste hindurchsehen.

IgnoreFoW zeichnet ja über den FoW, und das möchte man nicht (außer bei HUD-Elementen). Es geht nur darum, dass die Objekte selbst nicht transparent werden.
Attachment: transparenz.png (119k)
Parent - - By Serpens66 (More than 200 posts.) Date 14.03.2015 12:10
ja genau den Effekt meine ich :)
Wenn das Objekt sehr groß ist, also z.b ein langer großber Lichtstrahl der iwo im Himmel weit im Kriegsnebel beginnt und auf die Erde niedergeht, ist die Transparenz dann letzlich so groß, dass man es garnicht mehr sehen kann.
Hat mich einige Stunden gekostet, bis ich rausgefunden habe, dass es am Kriegsnebel liegt, dass das Licht nicht so funktioniert wie es soll :D
Parent - - By Gecko (More than 500 posts.) Date 14.03.2015 18:19
Hm, sowas könnte man doch auch durch Partikel lösen?

Guck mal in Kristalltal aus Fantasy.c4f.
So ein Strahl wird dort bei der Spieler Initialisierung erstellt. :)
Parent - - By Serpens66 (More than 200 posts.) Date 14.03.2015 19:21 Edited 14.03.2015 19:23
Danke für die Idee :)  Ist aufjedenfall ein interessanter strahl da, vllt kann ich den iwann auch mal gebrauchen.

Aber in meiner jetzigen Anwendung soll der Lichtstrahl quasi Vorbote für ein Explosives Geschoss sein, welches kurz danach vom Himmel fällt .
(Idee von den Ionenflints aus dem Widening Pack, nur da siehts nicht so doll aus, daher hab ich mich zur Verschönerung an dem Blaster des Cancers aus dem Hazard Ships Pack orientiert)

sieht aktuell so aus:
Parent - - By Gecko (More than 500 posts.) Date 14.03.2015 22:25
Ich finde das über den FoW zu legen hat auch was nettes.
Parent - - By Wipfhunter (More than 200 posts.) Date 14.03.2015 22:32
Ja- besonders falls es sich bei dem Geschoss um einen stark aufgeladenen Laser handeln sollte, der alles unten drunter weggrillt.
Parent - By Serpens66 (More than 200 posts.) Date 15.03.2015 01:47
Jop ist ein ziemlich kraftvoller Laserstrahl der da vom Himmel fliegt, pustet alles darunter weg :) und der Lichtkegel sagt für 150 Frames vorher quasi "Achtung, hier gibts gleich nen fetten Rums" :D

Ja , wenn sich keine Lösung findet, dann sollte es auch so passen :)
Parent - By Serpens66 (More than 200 posts.) Date 14.03.2015 12:08
danke für die Idee.
Ich meine genau den Effekt den B_E eben beschrieben hat :)

Habe aber trotzdem mal ein Duplikat vom Lichtkegel mit IngoreFow erstellt. Falls wir keine andere Lösung finden, wäre das zur Not erstmal in Ordnung.
Parent - - By Pyrit (More than 200 posts.) Date 14.03.2015 21:52
Vllt muss nicht nur das Offset aus dem FoW raus, sondern das ganze Objekt? Hast du schon SetShape() probiert?
Parent - - By Serpens66 (More than 200 posts.) Date 15.03.2015 01:45 Edited 15.03.2015 01:49
Guter Gedanke, aber sofern ich nichts falsch gemacht habe, klappt das leider auch nicht =/

wird einmalig ausgeführt:
  ppLight=CreateObject(LGHC,x,AbsY(GetY(GetCursor(GetOwner()))),GetOwner()); // Lichtkegel soll so positioniert sein, dass der Lichtkegel an einer vernünftigen Stelle beginnt
  //diese Stelle soll nicht sichtbar sein. mein bester Gedanke war, sich an der Position des werfenden Clonk zu orientieren. Noch liegt das Offset beim Beginn des Strahls
  ppLight->ChangeColor(RGBa(120,0,255,0)); // Farbe geben
  ppLight->ChangeOffset(0,-600);   // Offsett des Lichts verschieben, dadurch verschiebt sich automatisch auch der Beginn des Kegels um 600 nach oben
  ppLight->ChangeSizeXY(3000,30000); //  groß und lang machen
  ppLight->ChangeR(180);  // Richtung anpassen
  SetShape(0,0, 2, 2, ppLight); // Offset nicht verändern, breite und Höhe 2 Pixel... sollte also locker alles im Sichtbereich sein :D

folgendes wird danach regelmäßig bis zur Explosion ausgeführt, damit der Lichtkegel nicht runterfällt:
if(ppLight)  {SetPosition(GetX(),GetY(GetCursor(GetOwner())),ppLight);  SetYDir(0,ppLight);}

Allgemein könnte ich die Position jetzt aber auch noch etwas ändern, wenn der Strahl immer gezeichnet wird. Dann beginnt der Strahl einfach immer bei Y=1 und muss lang genug sein. Mal schauen wie das aussieht :)
Parent - By Serpens66 (More than 200 posts.) Date 15.03.2015 01:59 Edited 15.03.2015 02:02
habe übrigens gerade gemerkt, dass es nicht nur am Fow liegt.
Auch wenn kein Fow da ist, wird ein Objekt nicht gezeichnet, wenn es sich außerhalb des Sichtfensters befindet.

Hier hilft es aber, das Offest ins Sichtfeld zu legen :)

Habs jetzt also so geändert, dass der Lichtkegel immer bei Y=1 beginnt und das Offset in Höhe des Clonks gelegt wird, damit es aufjedenfall im Sichtbereich ist.
Up Topic Deutsch / Hilfestellung / Kriegsnebel lässt Objekte verblassen/verschwinden

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill