Ahora, en nuestra llamada de vuelta,
nos vamos al detalle
para obterner la función GetUserData.
Esto nos dará un puntero a la entidad
que dio origen a estos
cuerpos físicos que se tocan.
Desde aquí , iniciamos una nueva y mágica
madriguera de conejo.
Para cada uno de los objetos que se tocan,
necesitamos señalar
que ha ocurrido una colisión.
Hacemos esto llamando una nueva función,
llamada onTouch,
y pasarla al otro cuerpo físico
que está tocándolo.
Así puedes ver que la entidad A
llama a una función onTouch,
que se traspasa al cuerpo B
y la entidad B obtiene una función onTouch
que se traspasa al cuerpo A.
Esta configuración permite
a cada entidad individual
responder a las colisiones
en su forma particular.
Por ejemplo, el onTouch en un misíl,
eliminará 5 puntos de salud del jugador
con el que colisionó.
O si solo golpea un muro,
decidirá autodestruirse.
Pero no hemos escrito
la función onTouch todavía.
Y con el objeto de hacer esto,
necesitamos regresar hasta entity.js
y agregar una función onTouch.
Esto permite que otras unidades
puedan sobrecargar esta función
con una lógica propia después.
Cabe mencionar que debes hacer
una serie de revisiones de datos
para asegurar que la información
dada a la función post cell sea válida.
Por ejemplo, ya sea que el cuerpo A
y el cuerpo B sean o no objetos válidos
o simplemente nulos.
Y ya sea que los puntos
de los tipos apropiados de entidad
tengan o no la función onTouch.
Te dejaremos husmear
en estos problemas en el futuro.
Pero creemos que te hemos permitido
dar un vistazo a la locura
detrás de la máscara.
Eso significa que cualquiera
que defina un cuerpo físico
debiera también definir
una función onTouch.