Historique des modifications - Message

Message #4075

Sujet: utiliser la position relative de la souris pour définir une position ?


Type Date Auteur Contenu
Création du message 27-05-2008 08:31:09 noals
salut,

en fait j'ai fait une caméra 3rd person.
j'ai donc l'axe X de ma souris qui change la rotation du player
et j'ai l'axe Y de la souris qui bouge la caméra de haut en bas ou inversement.

mon problème, c'est que comme je base mes mouvement sur la position de la souris, si mon cursor se trouve au bord de mon écran, ma caméra peut pas aller plus loin.

j'ai demander sur le forum US déjà, il m'on dit de regarder le fichier source de la caméra FPS.
donc j'comprend dans ce fichier qu'il utilise la position relative de la souris avec une sorte d'algo pour définir la position de leur caméra mais sinon, j'y comprend kedal.

j'ai essayer dans tous les sens avec ce que j'savais mais j'en sais pas asser donc forcement ça limite.
'fin bref, si vous avez un bout de code ou une piste un peu plus précise qui pourrait m'aider à comprendre comment j'peux définir ma classe pour que les mouvement de ma caméra ne soit pas limité, ça serait sympa parce que là, j'comprend tous simplement pas.

j'avais uploader mon projet à titre d'exemple sur fileden mais filden bug la, j'mettrai le lien plus tard quand ils auront reglé leur probleme de serveur chez fileden.


pour mon code, en gros j'l'ai comme ça pour l'instant.
//--->  DEFINITION  <---///////////////////////////////////////////////////////////////////////////
position2d<f32> cursor;
f32 myX;
f32 myY;
f32 myZ;
f32 myX2;
f32 myY2;
f32 myZ2;

///////////////////////////////////////////////////////////////////////////////////////////////////
//--->  EVEN RECEIVER  <---////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////

class MyEventReceiver: public IEventReceiver
{
    public: virtual bool OnEvent(const SEvent& event)
    {
        if (event.EventType == EET_MOUSE_INPUT_EVENT)
        {
            cursor.X = event.MouseInput.X;
            cursor.Y = event.MouseInput.Y;
        }

    }
};


//--->  DEFINITION  <---///////////////////////////////////////////////////////////////////////////
vector3df myRotation(f32 myX, f32 myY, f32 myZ)
{
    f32 x = 0;
    f32 y = cursor.X;
    f32 z = 0;
    vector3df result;
    result.X = x;
    result.Y = y;
    result.Z = z;
    return result;
}
vector3df myRotation2(f32 myX2, f32 myY2, f32 myZ2)
{
    f32 x = 0;
    f32 y = -250 + cursor.Y;
    f32 z = 100;
    vector3df result;
    result.X = x;
    result.Y = y;
    result.Z = z;
    return result;
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////                         ////////////////////////////////////////////////////
//////////////////////////////        RENDERING        ////////////////////////////////////////////////////
//////////////////////////////                         ////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////

    IGUIEnvironment* guienv = device->getGUIEnvironment();
    IGUIStaticText* debug_panel = guienv->addStaticText(L"",rect<s32>(15, 15, 50, 30),true,true,0,-1,false);

    int lastFPS = -1;

    while(device->run())
    if (device->isWindowActive())
    {
        driver->beginScene(true, true, video::SColor(0,200,200,200));

//--------------------------------------------------------------------------------------------------------
        myCamera->setTarget(playerNode->getPosition()); //refresh caméra target
        myCamera->setPosition(myRotation2(myX2,myY2,myZ2)); //caméra angle
        playerNode->setRotation(myRotation(myX,myY,myZ));//player rotation


        smgr->drawAll();

merci
a+

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
129 invités en ligne
membre en ligne: -
RSS Feed