Please help, How would you do this?
Blitz3D Forums/Blitz3D Programming/Please help, How would you do this?
| ||
i need help on how you would do this on blitz3d.. using the mouse control to turn the head of model(b3d) the game is in 3rd person perspective *example i want the head to look up on a certain angle using my mouse |
| ||
I would click on the search tab above, select code archives, type the term mouselook into the box and click the Search button. |
| ||
Get the child bone/pivot of the neck/head of the model. Use turnentity/rotateentity after the updateworld command to rotate the bone. Rotate the bone by a calculated amount based on mouse input. That's a start...play around with it. |
| ||
What Matty said, and for more infos search the forum about FindChild() |
| ||
even if the b3d model is animated? i tried doing this but the 3d model stick to its animation |
| ||
If I remember correctly, you have to change the position of the head after UpdateWorld() but before RenderWorld(). |
| ||
; initialize graphics mode Graphics3D 800, 600, 32,1 ; hide mouse pointer HidePointer() ; create camera camera = CreateCamera() PositionEntity camera, 0, 2, -10 ; loading skinned mesh kuznec = LoadAnimMesh("../../../media/meshes/kuznec.b3d") head = FindChild(kuznec, "Bone10") RotateEntity kuznec, 0, 180, 0 ; extract animation sequences ExtractAnimSeq(kuznec, 99, 129) ; play idle animation Animate kuznec, 1, 1.0, 1 Animate kuznec, 0, 1.0, 0, 0, "Bone10" ;disable animation for head ; create target sphere target = CreateSphere() ScaleEntity target, 0.1, 0.1, 0.1 PositionEntity target, 3, 2, -2 MoveMouse GraphicsWidth() / 2, GraphicsHeight() / 2 ; main program loop While Not KeyDown(KEY_ESCAPE) ; target control MoveEntity target, MouseXSpeed() * 0.05, -(MouseYSpeed() * 0.05), 0.0 MoveMouse GraphicsWidth() / 2, GraphicsHeight() / 2 ; check borders If (EntityX(target) > 5.0) Then PositionEntity target, 5, EntityY(target), 0 If (EntityX(target) < -5.0) Then PositionEntity target, -5, EntityY(target), 0 If (EntityY(target) > 6.0) Then PositionEntity target, EntityX(target), 6, 0 If (EntityY(target) < -2.0) Then PositionEntity target, EntityX(target), -2, 0 ; point head PointEntity head, target TurnEntity head, 0, -90, 90 ; fixing axis ; update animations UpdateWorld() ; render scene RenderWorld() ; draw texts Text 10, 10, "FPS: " + FPS() Text 10, 30, "Move mouse" ; switch back buffer Flip() Wend ![]() ;) |
| ||
; initialize graphics mode Graphics3D 800, 600, 32,1 ; hide mouse pointer HidePointer() ; create camera camera = CreateCamera() PositionEntity camera, 0, 2, -10 ; loading skinned mesh kuznec = LoadAnimMesh("../../../media/meshes/kuznec.b3d") head = FindChild(kuznec, "Bone10") RotateEntity kuznec, 0, 180, 0 ; extract animation sequences ExtractAnimSeq(kuznec, 99, 129) ; play idle animation Animate kuznec, 1, 1.0, 1 Animate kuznec, 0, 1.0, 0, 0, "Bone10" ;disable animation for head ; create target sphere target = CreateSphere() ScaleEntity target, 0.1, 0.1, 0.1 PositionEntity target, 3, 2, -2 MoveMouse GraphicsWidth() / 2, GraphicsHeight() / 2 ; main program loop While Not KeyDown(KEY_ESCAPE) ; target control MoveEntity target, MouseXSpeed() * 0.05, -(MouseYSpeed() * 0.05), 0.0 MoveMouse GraphicsWidth() / 2, GraphicsHeight() / 2 ; check borders If (EntityX(target) > 5.0) Then PositionEntity target, 5, EntityY(target), 0 If (EntityX(target) < -5.0) Then PositionEntity target, -5, EntityY(target), 0 If (EntityY(target) > 6.0) Then PositionEntity target, EntityX(target), 6, 0 If (EntityY(target) < -2.0) Then PositionEntity target, EntityX(target), -2, 0 ; point head PointEntity head, target TurnEntity head, 0, -90, 90 ; fixing axis ; update animations UpdateWorld() ; render scene RenderWorld() ; draw texts Text 10, 10, "FPS: " + FPS() Text 10, 30, "Move mouse" ; switch back buffer Flip() Wend ![]() ;) |
| ||
@Yue thanks!!!! |