#0 

11-08-2009 15:24:25

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Bonjours,

Voila ma caméra est "enfermé" dans une pièce. La collision est géré avec la camera et les murs pièce (avec createCollisionResponseAnimator ). Mais je voudrai que quand la caméra arrive à un certain endroit la caméra soit téléporté hors de la salle. Le porblème c'est quand je veux faire "téléporter" la caméra en la mettant  hors de la pièce (avec setPosition), la caméra ne dépassepas  le mur de la salle car il y a une collision. Donc je me demandais comment on pouvait créer une téléportation de la caméra et qui passe a travers les murs ?

Hors ligne


#1 

11-08-2009 18:30:43

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Si c'est pour une téléportation, pourquoi ne pas détruire ta camera, et en re-créer une à l'endroit souhaité, ou encore tous simplement la repositionner à l'autre endroit. Ou alors tu passe par une translation amenant ta camera à un autre endroit, mais ce n'est plus de la
téléportation, mais un 'passe-muraille', et c'est un autre problème wink


Force et sagesse...

Hors ligne


#2 

11-08-2009 22:25:02

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Comment peut-on repositionner sans setPosition?

Hors ligne


#3 

11-08-2009 22:27:33

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

Utilise setWorld() pour lui donner un triangle selector vide et tu le réutilise pour remettre correctement après.


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 

12-08-2009 18:12:06

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

Le débogeur ne reconnait pas la fonction setWorld().

Hors ligne


#5 

13-08-2009 08:38:35

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

Ta collision doit etre créée avec ceci avec irr::scene::ISceneNodeAnimatorCollisionResponse au lieu de irr::scene::ISceneNodeAnimator.
Donc tu remplace :

Code:

scene::ISceneNodeAnimator* anim =    smgr->createCollisionResponseAnimator(
        selector, camera, core::vector3df(30,50,30),
        core::vector3df(0,-3,0),
        core::vector3df(0,50,0));
        selector->drop();
    camera->addAnimator(anim);
    anim->drop();

Par :

Code:

scene::ISceneNodeAnimatorCollisionResponse* anim =    smgr->createCollisionResponseAnimator(
        selector, camera, core::vector3df(30,50,30),
        core::vector3df(0,-3,0),
        core::vector3df(0,50,0));
        selector->drop();
    camera->addAnimator(anim);
    anim->drop();

Tu peux maintenant utiliser la fonction setWorld().


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


#6 

13-08-2009 12:07:17

Kit-fisto24
Membre
Date d'inscription: 03-08-2009
Messages: 60

setWorld() n'est toujours pas reconnu par le débogeur. sad

Mais tmyke avait dit qu'on pouvait repositionner la caméra sans utiliser setPosition. Comment faire?

Hors ligne


#7 

13-08-2009 18:34:50

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Je parlais surtout de libérer les ressources de ta camera pour en recréer une autre à un endroit choisi.
C'est pas très élégant, mais cela peut être une solution en attendant mieux.


Force et sagesse...

Hors ligne


#8 

13-08-2009 21:29:02

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

Quel version d'irrlicht as-tu? car j'ai regardé dans la doc d'irrlicht 1.5 et 1.4.2 et elle apparait.
Sinon le IScenNodeAnimatorCollisionResponse recoit les events lorsque qu'il est attaché à une camera active. Donc peut etre qu'en basculant sur une autre camera avant le setPosition() puis en la réactivant tu pourrais inhiber la detection de collision durant le transport.

Dernière modification par johnplayer (13-08-2009 21:35:55)


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
41 invités en ligne
Aucun membre connecté
RSS Feed