Hola estoy haciendo un juego 2d y la verdad estoy muy novato para modificar los puntos de los colliders en este caso un edge collider, el problema que tengo esque tengo un edge de 6 puntos como un pentagono pero sin unirse el ultimo punto dejando un espacio, quisiera saber si se puede modificar el tamaño de este collider cada que se ejecute un metodo, que se agranden sus puntos cada vez mas y mas o simplemente hacer que se escale con la camara principal.
Cita de: Joksan date=1532408137quisiera saber si se puede modificar el tamaño de este collider cada que se ejecute un metodo, que se agranden sus puntos cada vez mas y mas o simplemente hacer que se escale con la camara principal.
Te estaba por decir que sí, que yo habíaa hecho al parecido, pero (con un mesh de fondo), basicmente creaba los puntos de la mesh y luego esas posiciones las pasaba al edge collider
edgeCollider.points = *** un Vector2[] *** ;
pero leyendo del manual ( https://docs.unity3d.com/Manual/class-EdgeCollider2D.html (https://docs.unity3d.com/Manual/class-EdgeCollider2D.html) ) dice:
Points: Non-editable information about the complexity of the generated collider. Probá y fijate, en tu caso deberías tener la info en un Vector2[] existen algoritmos fáciles para incrementar llos lados de por ej un cuadrado (4 lados) a un circulo (infinitos "lados"), cada vez que se de un cambio y aplicarlo como arriba.
creo que se puede asignar otro array (de vector2) al collider....
Vector2[] oldPoints = miCollider.points;
Vector2[] nuevoArray = new Vector2[pointCount];
for (int i=0; i<oldPoints.Lenght; i++){
nuevoArray = oldPoints + new Vector2(20f,20f);
}
miCollider.points = nuevoArray;
aunque no estoy seguro...
Muchas gracias lo voy a intentar por eso decia que era novato para el collider no encontraba mucha informacion sobre eso lo que pasa es que ese collider es un destroy zone para que se destruya un objeto al tocar asi que no puedo usar un box collider porque si pongo el objeto dentro de el se estaria destruyendo constantemente.
se me ocurrio una manera mas facil y es cambiando el edge collider por un box collider y ese dejarlo aparte luego en otro empty object crear un edge collider de tan solo 2 puntos y que no necesite modificarlos
this.collider2D.transform.Translate(new Vector2(-1f, 0));
trate de implementarlo en el update al ejecutarse una variable instanciada asi:
void Update ()
{
if (CanFallCheckZoneScript.instance.MoverCollider == true)
{
CanFallCheckZoneScript.instance.MoverCollider = false;
this.GetComponent<Collider2D>().transform.Translate(new Vector2(-1f, 0));
}
}