Historique des modifications - Message

Message #10626

Sujet: Créer un téléporter


TypeDateAuteurContenu
Dernière modification13-07-2012 17:51:29johnplayer
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 message13-07-2012 17:47:38johnplayer
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

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
142 invités en ligne
membre en ligne: -
RSS Feed