Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

177
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda