Page 1 sur 1
Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 14:38
par GallyHC
Bonjour,
J'aimerais faire un effet 2D pour une visualisation de lumière (comme la capture ci-dessous).
Bon déjà, je sais que l'on peut partir d'un cône (avec dégrader). Mais la je sèche pas mal sur ce coup-ci. Ce qui faudrait, c'est que la longueur du rayon de la lumière soit variable, et qu'il puisse tourner sur lui même. (Après que la couleurs soit aussi variable; mais bon la je pourrait surement adapter).
Merci d'avance a tout le monde,
GallyHC
Re: Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 16:54
par djes
Si le rayon est toujours de la même largeur, avec un simple PNG transparent (assez grand), tu devrais t'en sortir...
Re: Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 17:07
par Fig
Vite fait, sans gérer la transparence, mais ce n'est pas difficile à faire si nécessaire.
Code : Tout sélectionner
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
MessageRequester("Error", "Can't open the sprite system", 0)
End
EndIf
If OpenWindow(0, 0, 0, 800, 600,"icons lighting", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
CreateSprite(0,20,20)
StartDrawing(SpriteOutput(0))
Box(0,0,20,20,RGB(128,128,128))
StopDrawing()
CreateSprite(1,300,300)
StartDrawing(SpriteOutput(1))
DrawingMode(#PB_2DDrawing_Gradient)
BackColor($0000ff)
FrontColor($000000)
LinearGradient(0,0,0,300)
Box(0,0,300,300)
StopDrawing()
rayon=300
angle=0:largeur_angle=45 ;en degrés
iconx=390:icony=290:couleur=RGB(Random(255),Random(255),Random(255))
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Event = 0
ExamineKeyboard()
ClearScreen(RGB(0,0,0))
x1.f=rayon*Cos(Radian(angle))
y1.f=rayon*Sin(Radian(angle))
x2.f=rayon*Cos(Radian(angle+largeur_angle))
y2.f=rayon*Sin(Radian(angle+largeur_angle))
TransformSprite(1,SpriteWidth(0)/2,SpriteHeight(0)/2,SpriteWidth(0)/2,SpriteHeight(0)/2,x1,y1,x2,y2)
DisplaySprite(1,iconx,icony)
DisplaySprite(0,iconx,icony)
FlipBuffers()
angle+2
Until Quit Or KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open windowed screen!", 0)
EndIf
EndIf
Re: Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 18:05
par GallyHC
Bonjour,
Djes > Oui, mais la longueur est justement variable ^^.
Fig > Ha la, un très bon point de départ et un grand merci je vais analyser ^^.
GallyHC
Re: Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 18:25
par Fig
Si tu customise le dégradé ou charge directement un Png, tu auras une meilleur qualité de lumière.
Tu peux régler le rayon et la largeur du faisceau avec les variables éponymes.
Re: Réalisation d'un effet de lumière 2D
Publié : mar. 16/janv./2018 18:47
par venom
Après tu avais fait
ce code fig qui est top
@++
----edit lien by Ar-S---
Re: Réalisation d'un effet de lumière 2D
Publié : mer. 17/janv./2018 16:12
par djes
GallyHC a écrit :Djes > Oui, mais la longueur est justement variable ^^.
J'ai demandé pour la largeur, pas la longueur...
Re: Réalisation d'un effet de lumière 2D
Publié : mer. 17/janv./2018 17:12
par GallyHC
^^ Mal lu forcement et oui variable aussi sinon c'est pas marrant lol.
Cordialement,
GallyHC