megamarc / Tilengine

Free 2D graphics engine with raster effects for retro/classic style game development

Home Page:https://www.tilengine.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[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 😃
collision

Lo que ocurre en la línea

if (ti.index)
es que, en unos ciclos (~8 aprox.) del for, ti.index no se cumple por lo tanto sy no se asigna a cero.
Esto es porque en la línea
xpos = x % layer->width;
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=2047en 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:

TLN_GetLayerTile (0, x+c+xworld, y2+48, &ti);

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!