04-03-2020, 09:16 PM
A grandes rasgos puedes basarte en el proyecto de ejemplo https://github.com/megamarc/TilenginePythonPlatformer.
La idea es que tu gameplay utilice coordenadas de mundo, no de pantalla, tanto la "cámara" como los actores o personajes. Por ejemplo después de haber estado un rato avanzando hacia la derecha, puedes tener la cámara en cam_x = 3700 y un personaje en actor_x = 3850. Luego estableces la posición de la capa a cam_x, y la posición de los sprites en pantalla la obtienes restando la posición de la cámara menos la posición del actor. Sería algo así, para que te hagas una idea:
De esta forma, al trabajar internamente en coordenadas de mundo, puedes usar directamente la función Layer.get_tile() (estructura TileInfo) que te comentaba antes.
El determinar cuándo y cómo se mueve la "cámara", o si va siguiendo a alguien, ya es cosa de tu gameplay
La idea es que tu gameplay utilice coordenadas de mundo, no de pantalla, tanto la "cámara" como los actores o personajes. Por ejemplo después de haber estado un rato avanzando hacia la derecha, puedes tener la cámara en cam_x = 3700 y un personaje en actor_x = 3850. Luego estableces la posición de la capa a cam_x, y la posición de los sprites en pantalla la obtienes restando la posición de la cámara menos la posición del actor. Sería algo así, para que te hagas una idea:
Code:
layer.set_position(cam_x, cam_y)
for actor in actores:
actor.sprite.set_position(actor.x - cam_x, actor.y - cam_y)
De esta forma, al trabajar internamente en coordenadas de mundo, puedes usar directamente la función Layer.get_tile() (estructura TileInfo) que te comentaba antes.
El determinar cuándo y cómo se mueve la "cámara", o si va siguiendo a alguien, ya es cosa de tu gameplay