#1 

15-10-2013 15:38:10

Kaze
Membres
Date d'inscription:
Messages: 60
IP: 92.90.26.35
Courriel

Bonjour,

le titre est peu évocateur mais je n'arrive pas à le résumé autrement. J'aimerais créer un système qui fait que lorsque le joueur est assez proche d'une porte, elle s'ouvre. J'ai pensé a créer un boite de collision autour de ma porte et dès que je détecte la collision (ou plutôt le contact) avec cette zone, la porte s'ouvre. Sauf que je n'ai pas trouvé le moyen de faire que cette zone soit transparente pour le joueur (qu'il ne la voit pas et qu'elle ne l'arrête pas).

Existe-t-il un système avec Newton me permettant de faire ça. J'ai chercher dans la doc de newton sans trouver mon bonheur.
Merci d'avance.

PS : J'utilise Newton 1.5


Hors ligne


#2 

15-10-2013 18:37:30

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 92.146.118.86
Courriel  Site web

a premier vue le plus simple dans ton cas
c'est de faire bêtement un list d'object qui s'active a distance (tu passe par une interface)
et a chaque step de ton game engine tu test la distance joueur, object
tu peut optimiser en calculant les objets visible toutes les 150ms

sinon tu peut crée un ISceneNodeAnimator qui va généré un event dans OnAnimate lorsque la distance un < à x en fonction du joueur
qui seras géré soit via OnEvent (SUserEvent) soit via un interface perso dont ton game engine heriteras avec la porte en question

après newton ne semble pas géré les ghost object qui eux sont dispo dans bullet a vérifier,
notament utiliser comme contact listener, mais dans ton cas ce n'est pas indispenssable
je dirais même que c'est moin éfficient de passer par la physique

ps: pas beusoin de 'collsion box'

Code c++ :

player->getPosition()->getDistanceFrom(object[i]->getPosition());

Hors ligne


#3 

15-10-2013 19:21:25

johnplayer
Membres
Avatar de johnplayer
Date d'inscription:
Messages: 431
IP: 83.192.214.238
Courriel

Ou alors tu créé un aabbox3df lié à ta porte qui représente la zone d'activation. Ensuite pour voir si le joueur est dans la Box, tu fais : Box->isPointInside (vector3df position_joueur).


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


#4 

15-10-2013 20:06:19

Kaze
Membres
Date d'inscription:
Messages: 60
IP: 92.90.26.28
Courriel

Je vais prendre la solution de johnplayer qui m'a l'air plus simple a appliqué dans mon cas mais merci pour vos réponse.


Hors ligne


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