Un cube que vous pouvez diriger avec les touches du clavier et qui souhaite se voir dans un miroir. Souci ..... il ne se voit pas bien.
Est il possible d'améliorer ce code que vous pouvez télécharger depuis le lien ci-dessous ?

Je poste aussi le code si vous ne souhaites pas downloader.
Code : Tout sélectionner
; Naissance d'un cube : Suis je beau en ce miroir
EnableExplicit
InitEngine3D()
InitKeyboard()
InitSprite()
Global Window, Event
Global Camera
Global Texture, Material, Mesh, Entity, Ground, Player, PlayerSpeed.f
Global Miror_Mesh, Miror, CubeMap, CubeMap_Material
Window = OpenWindow(#PB_Any,0,0,1024,768,"Mon beau miroir")
OpenWindowedScreen(WindowID(window),0,0,1024,768)
Add3DArchive("Data/scripts/materials", #PB_3DArchive_FileSystem)
Add3DArchive("Data/skybox/morning.zip", #PB_3DArchive_Zip)
Parse3DScripts()
;
; Activation Physics et Collisions (A mon avis ça ne sert à rien)
EnableWorldPhysics(#True)
EnableWorldCollisions(#True)
;
; Ambiance
SkyBox("morning.jpg")
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)
WorldShadows(#PB_Shadow_Additive)
;
; Camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
;
; Materiel (texture) qui servira pour le sol et le cube
Texture = CreateTexture(#PB_Any,256,256)
StartDrawing(TextureOutput(Texture))
Box(0,0,256,256,RGB(0, 0, 0))
Box(1,1,252,252,RGB(255, 216, 0))
StopDrawing()
Material = CreateMaterial(#PB_Any, TextureID(Texture))
MaterialFilteringMode(Material, #PB_Material_Anisotropic, 6) ;Meilleurs rendu de la texture
;
; Sol
Mesh = CreatePlane(#PB_Any, 50, 50, 1, 1, 6, 6)
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material))
EntityPhysicBody(Entity, #PB_Entity_StaticBody, 0,0,1)
;
; Player
Mesh = CreateCube (#PB_Any, 1)
Player = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), 0, 0.5, 0)
EntityPhysicBody(Player, #PB_Entity_BoxBody, 1, 0.1, 0.2)
; Miroir
Mesh = CreateCube(#PB_Any, 1) ;Support du miroir
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), 0,1.5,10.10)
ScaleEntity(Entity, 4.25,3.25,0.10)
Mesh = CreatePlane(#PB_Any, 4, 3, 1, 1, 1, 1) ;Miroir
Material = GetScriptMaterial(#PB_Any, "CubeMapMaterial")
CubeMap = CreateCubeMapTexture(#PB_Any, 512,512, "CubeMapTexture") ;Une texture cube map refléchit le milieu qui l'entoure
Miror = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), 0, 1.55, 10)
EntityCubeMapTexture(CubeMap, Miror) ;Applique la texture cube map à l'entité.
EntityPhysicBody(Miror, #PB_Entity_StaticBody)
RotateEntity(Miror, -90, 0, 0)
Repeat
Event = WindowEvent()
If ExamineKeyboard()
;Sortie du jeu
If KeyboardPushed (#PB_Key_Escape)
Break
EndIf
;En avant ou en arriére
If KeyboardPushed (#PB_Key_Up)
PlayerSpeed = 4
ElseIf KeyboardPushed (#PB_Key_Down)
PlayerSpeed = - 4
Else
PlayerSpeed = 0
EndIf
;A gauche ou à droite
If KeyboardPushed (#PB_Key_Left)
RotateEntity(Player, 0, 1.5, 0, #PB_Relative)
ElseIf KeyboardPushed (#PB_Key_Right)
RotateEntity(Player, 0, -1.5, 0, #PB_Relative)
EndIf
If PlayerSpeed <>0
DisableEntityBody(Player, #False) ; Pour réveiller le player qui parfois reste bloquer
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf
; Caméra suiveuse (PB 5.20)
CameraFollow(Camera, EntityID(Player), -180, 1.5, 5, 0.05, 0.05)
EndIf
; Affiche le rendu de la scène
ClearScreen(RGB(0, 0, 0))
RenderWorld(40)
FlipBuffers()
ForEver
Code : Tout sélectionner
material CubeMapMaterial
{
technique
{
pass
{
ambient 1.0 1.0 1.0
diffuse 2.0 2.0 2.0
specular 1.0 1.0 1.0 9800.0
texture_unit
{
cubic_texture CubeMapTexture combinedUVW
tex_address_mode clamp
env_map cubic_reflection
}
}
}
}