Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

176
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!