[?] Scrolling ou simple décalage de materiel
Publié : mer. 03/juil./2013 16:12
Cette extrait de code permet de faire un scrolling horizontale de texture quand on uilise le flag #PB_Material_Animated Je pensais que si on utilisait le flag #PB_Material_Fixed, alors la texture serait juste décalait à droite par exemple. Mais ce n'est pas le cas.
Un peu de code pour illustrer le scrolling horizontale. Barre d'espace pour déclencher le scrolling.Maintenant remplacerparL'appui sur la barre d'espace ne provoque pas le décalage à droite de la texture.
Code : Tout sélectionner
...
ScrollMaterial(Material, 1, 0, #PB_Material_Animated, 0)
...
Un peu de code pour illustrer le scrolling horizontale. Barre d'espace pour déclencher le scrolling.
Code : Tout sélectionner
; Coordonnées x,y,z de la caméra
Define.f CamX, CamY, CamZ
InitEngine3D()
;Parse3DScripts()
InitKeyboard()
InitSprite()
window = OpenWindow(#PB_Any,0,0,1024,768,"")
OpenWindowedScreen(WindowID(window),0,0,1024,768)
;
; Les axes
Red = RGB(255, 0, 0) ;Couleur de l'axe x
Green = RGB(0, 255, 0) ;Couleur de l'axe y
Blue = RGB(0, 255, 255) ;Coleur de l'axe z
AxeX = CreateLine3D(#PB_Any, -10,0,0, Red, 10, 0, 0, Red)
AxeY = CreateLine3D(#PB_Any, 0,-10,0, Green, 0, 10, 0, Green)
AxeZ = CreateLine3D(#PB_Any, 0,0,-10, Blue, 0, 0, 10, Blue)
; Un MESH (La forme)
Mesh = CreateCube(#PB_Any, 2)
; Une TEXTURE
Texture = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(Texture))
Box(0,0,128,256,RGB(255, 68, 0))
Box(128,0,128,256,RGB(0, 255, 0))
StopDrawing()
; Un MATERIEL sur lequel on applique la texture
Material = CreateMaterial(#PB_Any,TextureID(texture))
; Création de notre entité : ENTITE = MESH + MATERIEL
; Par défaut il se positionne au point de coordonnée 0,0,0
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material))
;
; Une camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(128, 128, 128))
CamX=2.0
CamY=1.0
CamZ=15
; La caméra regarde en dirextion d'un point au coordonnées x=0, y=0, z=0
CameraLookAt(camera,0,0,0)
While #True
Event = WindowEvent()
ExamineKeyboard()
; Touche Escape pour fermer l'application
If Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape)
Break
EndIf
If KeyboardPushed(#PB_Key_Left)
CamX-0.2
ElseIf KeyboardPushed(#PB_Key_Right)
CamX+0.2
EndIf
If KeyboardPushed(#PB_Key_Up)
CamY+0.2
ElseIf KeyboardPushed(#PB_Key_Down)
CamY-0.2
EndIf
If KeyboardPushed(#PB_Key_Space)
ScrollMaterial(Material, 1, 0, #PB_Material_Animated, 0)
EndIf
MoveCamera(camera, CamX, CamY, CamZ, #PB_Absolute)
; Affiche le rendu de la scène
ClearScreen(RGB(0, 0, 0))
RenderWorld()
FlipBuffers()
Wend
Code : Tout sélectionner
ScrollMaterial(Material, 1, 0, #PB_Material_Animated, 0)
Code : Tout sélectionner
ScrollMaterial(Material, 10, 0, #PB_Material_Fixed, 0)