Bonjour, cher amis j'aurais besoin de votre aide : j'essaye depuis déjà longtemps de créer mon petit jeu j'avance de peut à peut.
Mes la j'ai s'un petit problème :
J'essaye de créer un système de téléporter ou de portal, le joueur qui est dans le secteur A (par exemple), rentre dans le portal, le jeu décharge le secteur A puis charge le secteur B. Comme sa c'est asser simple mes le problème viens du fais que je n'arrive à pas vérifier si le joueur rentre dans le portal, j'ai essayer avec des Aabox3d que je leur donne la t'aille du portal pour aller plus vite, mes lorsque que le jeu ce lance le joueur est directement téléporter dans l'autre secteur alors qu'il n'est pas dans le portal, la box semble directement créer aux centre du secteur et après plusieurs recherche il semble qui n'y a aucun moyen de modifier directement la position du la box ...
Et sans utiliser la Aabox3d je ne vois aucun moyen de vérifier que le joueur est bien aux centre du portal ou s'il n'y est pas ...
Si vous aurez une idée je suis preneur ...
Merci
Hors ligne
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.
Dernière modification par johnplayer (13-07-2012 19:51:29)
Hors ligne