Historique des modifications - Message

Message #10626

Sujet: Créer un téléporter


Type Date Auteur Contenu
Dernière modification 13-07-2012 17:51:29 johnplayer
Si l'encadrement de ton portail est construit en un seul mesh, tu peux faire un ISceneNode::getBoundingBox() pour récupérer la zone de téléportation puisqu'elle englobera ton portail (tu peux l'agrandir ou la réduire facilement après si tu le veux). Ensuite, tu utilises aabbox3d::isPointInside(camera->getPosition()) pour savoir si tu dois le téléporter ou non.
Si tu utilises la BoundingBox, tu peux utiliser les infos de debug pour la visualiser sinon il y a driver->draw3DBox().
Par contre, fais attention, la téléportation est un déplacement sur une certaine distance donc si tu intègres la collision à ton projet, tu auras des surprises si tu as des obstacles entre tes 2 points de téléportation.

Pour ce qui est de déplacer la box, tu fais :
void setPositionBox(aabbox3df& box, vector3df newPosition)
{
     vector3df deltaPos(newPosition - box.center());
     box.MaxEdge += deltaPos;
     box.MinEdge += deltaPos;
}

Sinon, il y a une autre méthode, si tu as le centre de ton portail, tu fais : (centre_portail - camera->getPosition()).getLength() et tu testes la distance.
Création du message 13-07-2012 17:47:38 johnplayer
Si l'encadrement de ton portail est construit en un seul mesh, tu peux faire un ISceneNode::getBoundingBox() pour récupérer la zone de téléportation puisqu'elle englobera ton portail (tu peux l'agrandir ou la réduire facilement après si tu le veux). Ensuite, tu utilises aabbox3d::isPointInside(camera->getPosition()) pour savoir si tu dois le téléporter ou non.
Si tu utilises la BoundingBox, tu peux utiliser les infos de debug pour la visualiser sinon il y a driver->draw3DBox().
Par contre, fais attention, la téléportation est un déplacement sur une certaine distance donc si tu intègres la collision à ton projet, tu auras des surprises si tu as des obstacles entre tes 2 points de téléportation.

Pour ce qui est de déplacer la box, tu fais :
void setPositionBox(aabbox3df& box, vector3df newPosition)
{
     vector3df deltaPos(newPosition - box.center());
     box.MaxEdge += deltaPos;
     box.MinEdge += deltaPos;
}

Sinon, il y a une autre méthode, si tu as le centre de ton portail, tu fais : (centre_portail - camera->getPosition()).getLength() et tu testes la distance.

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