Historique des modifications - Message

Message #4799

Sujet: Camera personalisée (style wow)


Type Date Auteur Contenu
Dernière modification 11-11-2008 12:33:58 pspmy
main.cpp
#include <irr/irrlicht.h>
#include "event.h"

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;
using namespace io;

IrrlichtDevice *device;
ISceneManager* smgr;
IVideoDriver* driver;
vector3df playerLastPosition;
bool playerMove;

int main()
{
    MyReceiver receiver;
    device = createDevice(EDT_OPENGL, dimension2d<s32>(800, 600),32, false, true, true);
    driver = device->getVideoDriver();
    smgr = device->getSceneManager();

    ICameraSceneNode *camera = smgr->addCameraSceneNode();
    IAnimatedMesh* mesh = smgr->getMesh("data\\\\game\\\\players\\\\1\\\\1.md2");
    IAnimatedMeshSceneNode *player = smgr->addAnimatedMeshSceneNode(mesh);

    this->device->setEventReceiver(receiver);
    camera->setParent(player);

    while(this->device->run())
    {	
	this->driver->beginScene(true, true, SColor(255,100,101,140));

	smgr->drawAll();

	driver->endScene();

			//==============================================================//
			//=== Recuperation de la position du player pour l'animation ===//
			//==============================================================//
			playerLastPosition = player->getPosition();
			//==============================================================//
			//=== Actualisation de la camera                             ===//
			//==============================================================//
			camera->setTarget(player->getPosition());
			camera->setPosition(vector3df(-60,50,0));
			//=============================================================//
			//=== Deplacement du personnage                             ===//
			//=============================================================//
			if (receiver.keys[KEY_UP])		//Avance
			{
				vector3df facing(cos(player->getRotation().Y * PI/180.0f), 0, -sin(player->getRotation().Y * PI/180.0f));
                                facing.normalize();
                                vector3df newPos = player->getPosition() + (facing - (facing * (f32)0.5));
                                player->setPosition(newPos);
			}
			if (receiver.keys[KEY_DOWN])	//Recule
			{
				vector3df facing(cos(player->getRotation().Y * PI/180.0f),0,-sin(player->getRotation().Y * PI/180.0f));
                                facing.normalize();
                                vector3df newPos = player->getPosition() - (facing- (facing * (f32)0.7));
                                player->setPosition(newPos);
				playerMove = true;
			}
			if (receiver.keys[KEY_LEFT])	//Rotation vers la gauche
			{
				player->setRotation(player->getRotation() - vector3df(0,1,0)); 
			}
			if (receiver.keys[KEY_RIGHT])	//Rotation vers la droite
			{
				player->setRotation(player->getRotation() + vector3df(0,1,0)); 
			}
			//==============================================================//
			//=== Animation du personnage                                ===//
			//==============================================================//
			if (playerLastPosition != player->getPosition())	//Si le joueur bouge
			{
				if (playerMove == false)								//Si l'animation de deplacement n'est pas activer
				{
					player->setMD2Animation(EMAT_RUN);				//Change l'animation du joueur
					playerMove = true;
				}
			}
			else															//Si le joueur ne bouge plus
			{
				if (playerMove == true)								//Si l'animation "courire" a ete activer
				{
					player->setMD2Animation(EMAT_STAND);				//Change l'animation du joueur
					playerMove = false;
				}
			}

	if (receiver.keys[KEY_ESCAPE])
	{
	    exit(0);
        }
    }
    return 0;
}
Création du message 11-11-2008 12:32:36 hardcpp
main.cpp
#include <irr/irrlicht.h>
#include "event.h"

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace gui;
using namespace io;

IrrlichtDevice *device;
ISceneManager* smgr;
IVideoDriver* driver;
vector3df playerLastPosition;
bool playerMove;

int main()
{
    MyReceiver receiver;
    device = createDevice(EDT_OPENGL, dimension2d<s32>(800, 600),32, false, true, true);
    driver = device->getVideoDriver();
    smgr = device->getSceneManager();

    ICameraSceneNode *camera = smgr->addCameraSceneNode();
    IAnimatedMesh* mesh = smgr->getMesh("data\\\\game\\\\players\\\\1\\\\1.md2");
    IAnimatedMeshSceneNode *player = smgr->addAnimatedMeshSceneNode(mesh);

    this->device->setEventReceiver(receiver);
    camera->setParent(player);

    while(this->device->run())
    {	
	this->driver->beginScene(true, true, SColor(255,100,101,140));

	smgr->drawAll();

	driver->endScene();

			//==============================================================//
			//=== Recuperation de la position du player pour l'animation ===//
			//==============================================================//
			playerLastPosition = player->getPosition();
			//==============================================================//
			//=== Actualisation de la camera                             ===//
			//==============================================================//
			camera->setTarget(player->getPosition());
			camera->setPosition(vector3df(-60,50,0));
			//=============================================================//
			//=== Deplacement du personnage                             ===//
			//=============================================================//
			if (receiver.keys[KEY_UP])		//Avance
			{
				vector3df facing(cos(player->getRotation().Y * PI/180.0f), 0, -sin(player->getRotation().Y * PI/180.0f));
                                facing.normalize();
                                vector3df newPos = player->getPosition() + (facing - (facing * (f32)0.5));
                                player->setPosition(newPos);
			}
			if (receiver.keys[KEY_DOWN])	//Recule
			{
				vector3df facing(cos(player->getRotation().Y * PI/180.0f),0,-sin(player->getRotation().Y * PI/180.0f));
                                facing.normalize();
                                vector3df newPos = player->getPosition() - (facing- (facing * (f32)0.7));
                                player->setPosition(newPos);
				playerMove = true;
			}
			if (receiver.keys[KEY_LEFT])	//Rotation vers la gauche
			{
				player->setRotation(player->getRotation() - vector3df(0,1,0)); 
			}
			if (receiver.keys[KEY_RIGHT])	//Rotation vers la droite
			{
				player->setRotation(player->getRotation() + vector3df(0,1,0)); 
			}
			//==============================================================//
			//=== Animation du personnage                                ===//
			//==============================================================//
			if (playerLastPosition != player->getPosition())	//Si le joueur bouge
			{
				if (playerMove == false)								//Si l'animation de deplacement n'est pas activer
				{
					player->setMD2Animation(EMAT_RUN);				//Change l'animation du joueur
					playerMove = true;
				}
			}
			else															//Si le joueur ne bouge plus
			{
				if (playerMove == true)								//Si l'animation "courire" a ete activer
				{
					player->setMD2Animation(EMAT_STAND);				//Change l'animation du joueur
					playerMove = false;
				}
			}

	if (receiver.keys[KEY_ESCAPE])
	{
	    exit(0);
        }
    }
    return 0;
}

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