CameraFollow(#Camera, Angle, ObjectID, Height, Distance, RotationPercent, PositionPercent)
Camera : C'est la camera qui va suivre votre entité
Angle : L'angle où la caméra sera placée (Devant, derrière, à gauche ou à droite)
ObjectId : Par exemple l'entité à suivre
Height : A quel hauteur se trouve la camera
Distance : Et à quel distance en arrière
Je n'ai pas trouver les mots pour expliquer les deux paramètres qui suivent.
Je dirais que ça va permettre de paramétrer l'inertie de la caméra à se repositionner derrière l'entité
RotationPercent : Valeur décimale
PositionPercent : Valeur decimale
Exemple :
Code : Tout sélectionner
; Naissance d'un cube : Camera Follow
EnableExplicit
InitEngine3D()
InitKeyboard()
InitSprite()
Global Window, Event
Global Camera
Global Texture, Material
Global Player_Mesh, Player, PlayerSpeed.f
Global Ground_Mesh, Ground
Window = OpenWindow(#PB_Any,0,0,1024,768,"Cube Follow")
OpenWindowedScreen(WindowID(window),0,0,1024,768)
;
; Activation Physics et Collisions (A mon avis ça ne sert à rien)
EnableWorldPhysics(#True)
EnableWorldCollisions(#True)
;
; Ambience, Lumiére blanche et activation des ombres
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))
;
; Un cube qui servira pour le joueur et les obstacles
Player_Mesh = CreateCube (#PB_Any, 1)
;
; Creation du sol (Obstacle static)
Ground_Mesh = CreatePlane(#PB_Any, 50, 50, 1, 1, 6, 6)
Ground = CreateEntity(#PB_Any, MeshID(Ground_Mesh), MaterialID(Material))
EntityPhysicBody(Ground, #PB_Entity_StaticBody, 0,0,1)
;
; Le joueur
Player = CreateEntity(#PB_Any, MeshID(Player_Mesh), MaterialID(Material), 0, 0.5, 0)
EntityPhysicBody(Player, #PB_Entity_BoxBody, 1, 0.1, 0.2)
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 = 2
ElseIf KeyboardPushed (#PB_Key_Down)
PlayerSpeed = - 2
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
;Nouvelle fonction qui apparait avec la vers 5.20 Beta 6
;CameraFollow(#Camera, Angle, ObjectID, Height, Distance, RotationPercent, PositionPercent)
;Essayer les deux exemples qui suivent
;CameraFollow(Camera, EntityID(Player), -180, 3, 6, 1.00, 1.00)
CameraFollow(Camera, EntityID(Player), -180, 3, 6, 0.05, 0.05)
EndIf
; Affiche le rendu de la scène
ClearScreen(RGB(0, 0, 0))
RenderWorld(40)
FlipBuffers()
ForEver