2017-01-11 4 views
0

J'ai besoin de savoir s'il y a une façon établie de le faire, car ce qui définit les limites de l'écran dépend du périphérique, etc. J'ai ces corps rigides qui ne sont pas cinématiques et ne sont pas affectés par la gravité. Quand je les instancie, ils sont tous dans un vide avec une sphère qui les recouvre pour créer un effet "explosion". Cela fonctionne bien, mais une fois que la sphère a repoussé les corps rigides et qu'une explosion s'est produite, j'ai besoin que les corps continuent de bouger jusqu'à ce qu'ils sortent de la vue des utilisateurs/de l'écran. Cela arrive pour la plupart d'entre eux mais ils sont des traînards et certains prennent beaucoup de temps, restant au centre de l'écran.Unité - comment forcer des corps rigides hors de l'écran visible?

J'appliquerais normalement une force mais je ne sais pas pour chaque corps rigide (il y en a beaucoup) de quelle façon ils auraient besoin de bouger en fonction de l'endroit où ils se trouvent.

Comment puis-je appliquer une force qui libère tous ces rigdibodies de l'écran? L'explosion est supposée être dans toutes les directions. Y a-t-il un certain vecteur qui ferait cela?

Répondre

0

Projette la position de l'objet sur le vecteur de mise au point de la caméra. Et puis faites un vecteur du point projeté, retour à l'objet.

Donc, quelque chose comme ..

var t = Vector3.Dot(Camera.main.transform.forward, obj.transform.position); //distance along view vector 
    var p = Camera.main.transform.position + Camera.main.transform.forward * t; // position along view direction 
    var d = obj.transform.position - p; //vector from center to object 
+0

Ok je vais essayer - j'ai une vue de côté caméra perspective mis en place si - vous êtes sûr que ce ne sera pas apporter les corps rigides vers la caméra au lieu de sortir ? – skyguy