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

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

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 Report

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 Report

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 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!