[Bug] Sample Barrel, collision fails.
opened this issue · comments
Hola Marc
Encontré una característica en éste bug y es que sucede en la unión del tilemap. Voy tratar de explicarme 😃
Lo que ocurre en la línea
Line 140 in 54037fc
for
, ti.index
no se cumple por lo tanto sy
no se asigna a cero.Esto es porque en la línea
Line 425 in 54037fc
x
es negativo(por lo tanto también xpos
) y desde ahí cualquier ti.index
es igual a cero, ya sea en Layer.c
o Simon.c
.
Lo solucioné agregando la siguiente línea en el archivo Layer.c
:
...
xpos = x % layer->width;
...
if(xpos < 0)
xpos += layer->width;
Esto hace xpos
positivo (xpos=2047
en el join) y así se soluciona el bug.
Pero como desconozco sobre tilemaps tengo mis dudas, no se si es aquí en la librería el bug o es sólo un bug en Simon.c
que hace que Layer.c (TLN_GetLayerTile)
no funcione correctamente.
Nota:
Line 139 in 54037fc
x+c+xworld
tiene valores entre 72 .. -21, etc.
Saludos.
Buen apunte! En realidad este ejemplo es demasiado complejo para formar parte de la distribución d tilengine, ya que debería estar al margen d implementaciones de mecánicas jugables. PEro es uno de los primeros ejemplos que hice y ahí se quedó. Los ejemplos más complejos que demuestran mecánicas jugables ya están en sus propios repositorios como SuperMarioClone o TilenginePythonPlatformer.
Lo que comentas no es un bug de la biblioteca: ti.index devuelve 0 porque en esa posición no hay ningún tile, está vacía, de ahí el índice 0. Reviso a fondo tu propuesta, gracias!