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

833
Visualizações
¿Cómo obtener puntos de contacto de un gatillo?

Estoy en una situación en la que necesito un sensor 2d que no colisione pero que también me proporcione puntos de contacto para una colisión.

Los disparadores no me dan puntos de contacto y los colisionadores me dan puntos de contacto pero provocan una colisión.

Intenté deshabilitar las colisiones al usar colisionadores con la esperanza de obtener una devolución de llamada de entrada de colisión pero sin que la colisión realmente ocurra, pero no tuve suerte.

Entonces, ¿cómo obtengo puntos de contacto de un disparador? ¿O cómo obtengo una devolución de llamada de colisión con cuerpos rígidos sin causar una colisión?

Básicamente, tengo un círculo que quiero que actúe como radar, pero también me gustaría que fuera bastante preciso con los puntos de contacto.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Publicación debido a que este es el mejor resultado de Google.

Creo que hay una forma más simple (depende de cómo lo mires, por supuesto) y más precisa de hacer esto que la transmisión de rayos.

 private void OnTriggerEnter(Collider collider) { var collisionPoint = collider.ClosestPoint(transform.position); }

collider es un colisionador que ingresó al disparador en cuestión, transform es la transformación de un disparador. Como sugiere el nombre de la función, este relleno encuentra un punto en el colisionador más cercano a dicho disparador. Por supuesto, esto no es súper preciso, especialmente para los colisionadores de formas extrañas, pero lo más probable es que sea lo suficientemente bueno para la mayoría de los casos, definitivamente lo suficientemente bueno para un proyectil, o digamos, una cuchilla, golpeando a un personaje de cuerpo rígido.

Como beneficio adicional, aquí hay una matemática vectorial simple para encontrar la colisión normal:

 var collisionNormal = transform.position - collisionPoint;

Una vez más, no es súper preciso y no será una normal real (es decir, perpendicular) al punto de impacto, pero como con uno anterior, lo más probable es que sea lo suficientemente bueno.

¡Diviértete!

over 4 years ago · Santiago Trujillo Relatório

0

Puede obtener un punto de contacto usando la función OnTriggerEnter

 OnTriggerEnter(Collider other) { RaycastHit hit; if (Physics.Raycast(transform.position, transform.forward, out hit)) { Debug.Log("Point of contact: "+hit.point); } }
over 4 years ago · Santiago Trujillo Relatório

0

Debe usar OnCollisionEnter pero agregue un rigidbody y configure isTrigger en false y configure rigidbody isKinematic en true , luego actuará como un disparador y puede obtener los puntos de contacto como este

 void OnCollisionEnter(Collision collision) { foreach (ContactPoint contact in collision.contacts) { Debug.DrawRay(contact.point, contact.normal, Color.white); }
over 4 years ago · Santiago Trujillo 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