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

838
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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