Rotate the body along with the cam

majc

02-08-2008 22:24:54

How can i rotate the body along with the cam movement?
I did this but its not working:

const MouseState &mouseState = mMouse->getMouseState();

camRotationX = -mouseState.X.rel * 0.13;

mPlayerCollision->getBody()->setOmega(Vector3(0,camRotationX,0));


I know a solution with setPositionOrientation but i want to avoid that because i read some posts and for what i read its not good to use that.

Thanks in advance!

majc

07-08-2008 19:30:12

Anyone?

feanor91

08-08-2008 13:03:13

Hello

Have you defined a callback function for your body? If yes, put your code in this function.

like this :

Private Sub camera_force_callback(ByVal Corps As Body)

'Cette procédure est appelée à chaque update du monde physique.
'On y applique la gravité ainsi que la rotation sur l'axe des X

If mnuGravite.Checked Then
Dim masse As Single
Dim inertie As Mogre.Vector3
Dim Force As Mogre.Vector3

'on récupère la position et l'orientation du corp passé en paramètre
Dim posBody As Mogre.Vector3 = CamBody.Position
Dim OrientBody As Quaternion = CamBody.Orientation
Corps.GetMassMatrix(masse, inertie) 'on récupère sa masse et son inertie
Force = New Mogre.Vector3(0, Gravity * 2000, 0) 'on y applique la gravité, le facteur de multiplication est là pour ajusté la valeur.
'Curieusement, si je ne multiplie pas, on se croirait sur la Lune. Si quelqu'un sait pourquoi, merci de me le dire.
Force *= masse
Corps.AddForce(Force) 'on applique la force de gravité

End If
Corps.Omega = New Mogre.Vector3(0, camera_rotation_x, 0) 'pour le déplacement sur X

End Sub

majc

08-08-2008 13:25:13

Thanks mate its working :)