Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

186
Vistas
Tres JS verifican si la posición está detrás del objeto

Tengo un personaje 3D junto con varias posiciones predefinidas en el suelo. ¿Hay alguna manera de verificar si una posición está detrás del personaje 3D y no al frente o de lado?

He incluido un boceto aproximado de lo que estoy tratando de lograr (perdón por el pobre dibujo). Básicamente, me gustaría devolver todas las posiciones de los círculos rojos dentro de las líneas rojas y excluir todos los demás círculos fuera de estas dos líneas.

ingrese la descripción de la imagen aquí

es posible? Si es así, ¿hay alguna sugerencia sobre cómo puedo lograr esto? Lo siento, pero en realidad no sé qué funciones usar de Three JS para algo como esto o si es posible.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si es posible.

Comienza comprobando primero si hay un punto /círculo detrás del jugador . Para ello, obtenga el producto escalar entre la dirección a la que mira el jugador (un vector unitario) y el vector de dirección del círculo (normalícelo para que también sea un vector unitario). Si los valores dotProduct <= 0 , entonces el círculo está detrás de su jugador.

(vector unitario significa que su vector tiene una magnitud de uno. Lo cual es una forma elegante de decir que x/y/z nunca irá más allá de 1)

ejemplo de código

 // Let's assume that the following code is in some sort of loop, yes // Get the direction vector to the circle const directionVect = circle.position.clone().sub(player.position).normalize(); // If your player is a camera you can get the direction like so const playerFacing = player.getWorldDirection(new THREE.Vector3()); // Orientation if (playerFacing.dot(directionVect) <= 0) { // Circle is behind the player // ...to be continued... } else { return; }

Ahora que sabe qué círculos están detrás de su jugador, puede obtener los círculos dentro del cono. Esto se hace obteniendo el ángulo entre la posición del jugador y la posición del círculo. A continuación, compruebe que el ángulo se ajusta a algunos criterios (por ejemplo, el ángulo no puede ser superior a 45 grados desde la parte posterior del reproductor).

 // ... // Orientation if (playerFacing.dot(directionVect) <= 0) { // Circle is behind the player const angle = player.position.angleTo(circle.position); if (angle < Math.PI * 0.25) { // Do something with circle } } else { return; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda