2009-11-15 6 views
2

Je construis un jeu en 3D mais je prévois d'utiliser une perspective 2D ne prenant pas l'axe z dans l'équation, Je veux être capable de limiter le mouvement d'un de mes modèles pour qu'il ne bouge pas du champ unmoving de vue,Existe-t-il une équivalence 3D pour bloquer dans XNA?

quand je concevais 2D, il est simple d'utiliser simplement pince, mais je ne peux pas semble figurebout comment faire en 3d

toute aide serait appréciée

Cordialement

Répondre

-1

Donc, vous voulez en pseudocode:

if (object.position+movementVec is in view of camera) 
    object.position+=movementVec; 
+0

Qu'est-ce qui n'allait pas avec ma réponse? L'OP voulait que son personnage ne bouge pas en dehors de la caméra, ma réponse a dit que Clamp ne fonctionnera pas ici car il faut tenir compte de la caméra. – codymanix

1

Si vous voulez simplement faire la même chose qu'une pince 2D serait - Vector3.Clamp régler le Y (généralement « UP ») composant des deux vecteurs délimitant vous passez à 0.

Je suis légèrement confus sur la question cependant, il semble que peut-être ce que vous recherchez est une forme de détection de collision avec la vue tridimensionnelle peut aider avec cela si votre modèle peut s'intégrer dans une relativité de sphère englobante joliment.

Vous devrez tester la collision par rapport à tous les plans qui définissent l'espace de vue. Si c'est une caméra perspective que vous utilisez, vous aurez besoin de la Frustum Planes, sinon c'est une caméra orthographique ce sont les plans qui font la boîte de délimitation de l'espace de vue (un cube qui est orienté de la même manière que la caméra).

1

Il suffit d'utiliser Vector3.Clamp(Vector3 value1, Vector3 min, Vector3 max) et utiliser le constructeur sur Vector3 qui prend un Vector2 et un int (pour la valeur de z).