Historique des modifications - Message

Message #6391

Sujet: Utilisation d'un joystick


Type Date Auteur Contenu
Création du message 25-04-2009 19:02:52 mari-ion
voici un extrait de ma fonction onEvent:

bool CEventReceiver::OnEvent(const irr::SEvent &event)
{

if (event.EventType == irr::EET_JOYSTICK_INPUT_EVENT
			&& event.JoystickEvent.Axis[0] == -257)

	{


	 std::cout << "axe stable" <<std::endl;
	 j_droit = false;
	  j_gauche = false;
	  j_face = false;
	  j_arriere = false;
	  j_stable =true;
	}

if (event.EventType == irr::EET_JOYSTICK_INPUT_EVENT
			&& event.JoystickEvent.Axis[0] == 32767)

	{
	 std::cout << "axe droite" <<std::endl;
	 j_droit = true;
	 j_gauche = false;
	 j_stable = false;
	 j_face = false;
	 j_arriere = false;
	}

	if (event.EventType == irr::EET_JOYSTICK_INPUT_EVENT
			&& event.JoystickEvent.Axis[0] == -32768)

	{
	 std::cout << "axe gauche" <<std::endl;
	 j_gauche = true;
	 j_droit = false;
     j_stable = false;
	 j_face = false;
	 j_arriere = false;

	}

	if (event.EventType == irr::EET_JOYSTICK_INPUT_EVENT
			&& event.JoystickEvent.Axis[1] == -32768  )

	{

	 j_gauche = false;
	 j_droit = false;
     j_stable = false;
	 j_face = true;
	 j_arriere = false;



	 std::cout << "axe avant" <<std::endl;

	}

	if (event.EventType == irr::EET_JOYSTICK_INPUT_EVENT
			&& event.JoystickEvent.Axis[1] == 32767)

	{
	 std::cout << "axe arriere" <<std::endl;
	 j_gauche = false;
	 j_droit = false;
     j_stable = false;
	 j_face = false;
	 j_arriere = true;


	}
}

voici un extrait de la fonction :majPosMesh() (toujours dans le CeventReceiver)

void CEventReceiver::majPosMesh()
{

if (j_droit == true)

	{
	 std::cout << "axe droit" <<std::endl;
	      //On commence par recuperer la position actuelle
                            irr::core::vector3df v = m_camera->getRotation();
                            //On y ajoute la valeur de deplacement
                            v.Y += 3.0f;
                            //On renvoie la nouvelle position
                            m_camera->setRotation(v);

	}

	if (j_gauche == true)

	{
                                            //On commence par recuperer la position actuelle
                                            irr::core::vector3df rotation = m_camera->getRotation();
                                            //On y ajoute la valeur de deplacement
                                            rotation.Y -= 3.0f;
                                            //On renvoie la nouvelle position
                                            m_camera->setRotation(rotation);
                                            m_camera->setPosition(rotation);

	}

	if (j_face == true)

	{
//On commence par recuperer la position actuelle
                                          /* irr::core::vector3df v = m_camera->getPosition();
                                            //On y ajoute la valeur de deplacement
                                            v.X += 2.0f;
                                  //On renvoie la nouvelle position
                                            m_camera->setPosition(v);*/
SEvent myevent;
myevent.EventType = EET_KEY_INPUT_EVENT;
myevent.KeyInput.PressedDown = true;
myevent.KeyInput.Key = KEY_UP;
device->postEventFromUser(myevent);



	}

	if (j_arriere == true)

	{
    //On commence par recuperer la position actuelle
                                            irr::core::vector3df v = m_camera->getPosition();
                                            //On y ajoute la valeur de deplacement
                                            v.X -= 2.0f;
                                            //On renvoie la nouvelle position
                                           m_camera->setPosition(v);
	}

}

et dans mon Game dans la boucle de rendu j'ai :
Event.majPosMesh();

en dehors de la boucle de rendu, dans mon game
   CEventReceiver  Event(camera,device);
        device->setEventReceiver(Event);

Sinon je peux contourner le probleme en modifiant la camera avec des setPosition()... getPosition()
mais le probleme c'est qu'a chaque mouvement je doit changer le repére, car pour aller en avant et en arriere ca bouge que sur un axe..
c'est difficil a expliquer... desole :s
mais par exemple je vais tout droit puis je tourne : ok ca marche jusqu'a la
mais une fois tourner si je veux aller tout droit cela ne marchera pas puisque ca ne bougera pas sur le bon axe

ya t'il une fonction pour mettre a jour le repére selon la rotation de la camera?

merci de votre aide j'apprecie votre rapidité!!

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
158 invités en ligne
membre en ligne: -
RSS Feed