#0 

13-07-2012 17:48:18

mmorpglefilm
Abonné
Lieu: la galaxie UDFy-38135539
Date d'inscription: 18-05-2010
Messages: 162
Site web

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 smile

Hors ligne


#1 

13-07-2012 19:47:38

johnplayer
Habitué
Date d'inscription: 30-09-2007
Messages: 431

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 :

Code:

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)


core i7 4970K @ 4GHz - 32GB ddr3 19200(2400MHz) - ssd samsung 840 evo 250GB - GTX1080Ti (4K) - Cooler master storm stryker blanc.
"L'alcool, c'est comme Activia, c'est actif à l'intérieur et ça se voit à l'extérieur."

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
883 membres
1429 sujets
11121 messages
Dernier membre inscrit: Saidov17
127 invités en ligne
Aucun membre connecté
RSS Feed