2017-08-08 21 views
0

J'ai travaillé sur un projet de base de style FPS (en utilisant beaucoup de conseils que j'ai trouvé de caché ici) et j'ai rencontré un problème.Babylon.js et Cannon.js caméra et collisions de murs bugs

est ici le code, premier off- https://www.babylonjs-playground.com/#GYZQLK#3

Utilisez les touches fléchées pour déplacer la caméra vers l'avant jusqu'à ce que vous frappez le mur, et vous verrez mon problème.

Je suis en train de

  1. ont un mécanisme de saut naturel et
  2. ont la détection de collision entre la caméra, sol, murs, etc.

Au début, je l'ai fait juste en utilisant les .checkCollisions natives de Babylon, qui fonctionne très bien pour les collisions entre caméras et objets et entre caméras et murs. Cependant, je ne pouvais pas obtenir cela pour fonctionner correctement pour sauter. Même après les tutoriels d'autres, (http://www.html5gamedevs.com/topic/12198-camera-jump/) je n'obtenais pas les résultats que je voulais; Sur mon ordinateur, au moins, tous ces esquisses de terrain de jeu «pendent» en haut du saut jusqu'à ce que d'autres flèches soient pressées. Donc, j'ai changé de vitesse et j'ai essayé d'utiliser Oimo et Cannon (individuellement) pour une physique plus robuste. Je n'arrive toujours pas à faire fonctionner Oimo, pour une raison ou pour une autre ("this.world.worldscale n'est pas une fonction", je ne trouve rien là-dessus) mais j'ai eu des résultats décents avec Cannon. En bref, j'ai le saut de travail, mais maintenant les collisions contre les murs sont ... funky.

Je suis plutôt bloqué. Je ne vois pas comment cette détection de collision est différente de celle entre le sol et la caméra, mais quelque chose est évidemment éteint. J'ai essayé avec d'autres objets horizontaux (boîtes, sphères) et j'ai obtenu les meilleurs résultats en plaçant l'imposteur physique de la caméra dans une boîte (ce qui rend le tout nerveux).

Des idées ou des idées? Merci a tous!

Répondre

0

J'ai reçu de l'aide au http://www.html5gamedevs.com/topic/32220-collision-with-walls-using-cannon/ et j'ai pensé que je publierais mes résultats ici aussi, au cas où quelqu'un d'autre aurait eu le même problème. La réponse courte est d'utiliser une animation pour contrôler le saut, et laisser le moteur physique de Babylone s'occuper des collisions avec la caméra. Laissez Cannon faire la physique pour les autres objets. Pour éviter que l'appareil photo ne soit suspendu en haut du saut, il existe une propriété cachée/non documentée (cameraname._needMoveForGravity) que vous pouvez définir = true (ce qui ressemble à l'opposé de ce que vous souhaitez, mais peu importe) cela aide.

quelqu'un Juste au cas où d'autre est aux prises avec cela, voici un croquis (avec quelques bagages supplémentaires, je parés la plupart des choses pour plus de clarté, mais pas tout)

Appuyez sur espace pour sauter http://www.babylonjs-playground.com/#NMPK63

Fondamentalement, je « m en utilisant l'exemple de iiceman de

ici-

(fil) http://www.html5gamedevs.com/topic/12198-camera-jump/

(aire de jeux) http://www.babylonjs-playground.com/#XN87O

et aussi la suggestion de Wingnut de changer camera._needMoveForGravity = true qui empêche avec succès l'appareil photo de «pendre» en haut des sauts