Ir al contenido principal

Vista en tercera persona

Luego de un poco de trabajo logré implementarlo correctamente. La solución que usé no es la óptima, pero es que mis conocimientos de geometría y álgebra no daban para más. Un amigo me recomendó que usara matrices, pero hasta allá no llego por ahora. Creo que debería haber una solución que no implique el uso de dos ángulos. Si por casualidad algún matemático pasa por aquí y lee esto, por favor que deje sus sugerencias para optimizar. Ahora lamento profundamente haberme dormido en el aula.


Esto es puro teorema de Pitágoras. Hay que partir de que en cada paso, en cualquier dirección, el personaje se moverá una distancia de S puntos y la cámara estará ubicada C puntos detrás. El personaje se desplaza en X y Z (obviaremos Y por ahora, que es la altura). Si sabemos S y el ángulo alfa, podemos determinar a y b, lo mismo para la cámara, que rota alrededor de la posición del personaje, siempre apuntando a su espalda.
cam_x = C * cos(beta)
cam_z = C * sen(beta)
player_x = S * cos(alfa)
player_y = S * sen(alfa)
En el programa como tal solo tenemos que inicializar los ángulos del personaje y la cámara: alfa=90, beta=90, y de acuerdo a la tecla presionada incrementamos alfa y decrementamos beta, o viceversa, teniendo en cuenta siempre que hay que dar la vuelta en 0 o 360.

Si alguien siente curiosidad, el gráfico está hecho con gimp. Hacer alfa y beta implicó un proceso algo curioso, la primera está hecha a partir de un 8 al que roté y borré un pedazo. Beta es el mismo 8, al que le borré un pedazo y le dibujé una línea.

Comentarios

  1. ¿y si hay un objeto detras del personaje?
    supongo que ese c es variable o algo así, ¿no?

    yo es que no entiendo nada de eso, pero bueno, queria saber que haces con las paredes...

    ResponderEliminar
  2. Por supuesto, C es variable. El mecanismo habitual en este tipo de vista para lidiar con los objetos detrás del personaje es acercar la cámara lo suficiente como para que el obstáculo no interfiera con la vista.
    Pero eso es un tema que por ahora escapa de mis posibilidades. Supongo que involucre detección de colisiones.

    ResponderEliminar

Publicar un comentario en la entrada

Entradas populares de este blog

Un poco de nostalgia: juegos retro

El Laberinto del Saber es un juego desarrollaod en Cuba a finales de los 80 o algo así, para MS-DOS. Aquí pueden verlo en acción:

Desde hace un buen tiempo que quiero hacer un remake moderno orientado principalmente a plataformas móviles, al principio lo intenté con SDL 2, pero luego decidí usar un motor decente. Entre Godot y Unity3d me decanté por el último, para no invertir tiempo en aprender una herramienta que no me serviría para hacer más juegos.
Sin embargo, el proyecto ya acumula unos seis meses de atraso por diversas razones, y ni siquiera tengo una imagen para mostrar. Así queni hablar de fecha de lanzamiento.

Unity 5.4 está aquí

Y no trae la herramienta de edición de cinemáticas, como esperaba. Al menos, no se hace referencia a ella en las notas de lanzamiento.
Justamente acabo de lograr descargar la 5.3.5, la cual ha sido bastante decepcionante. El MonoDevelop que incluye ha dejado de sugerir el autocompletado para los miembros de algunas clases (me queda por definir cuándo lo hace y cuándo no) y además el precalculado de la iluminación global me suelta una docena de advertencias, aparte de que me ha obligado a recalcular las luces dos veces. Y eso toma bastante tiempo.
Aún no sé si podré echarle el guante a la 5.4, y tampoco es que tenga mucho interés. Aunque supongo que peor no va a ponerse, y quizás hasta se arreglen las cosas.
Por suerte, no estoy programando mucho. Las últimas páginas de la cuarta novela me tienen  bastante ocupado, y también le estoy echando un vistazo a la historia del juego. Sin embargo, eso no será para siempre, en algún momento de esta semana tengo que seguir puliendo el sistema …

Leyendo a Sapkowsky

Este es uno de mis escritores favoritos y es lamentable que haya tan poco de él en español. Aunque hay que reconocer que Andrzej Sapkowsky no ha sido tan prolífico.
A Sapkowsky le basta con su saga de Geralt de Rivia para ser una figura de renombre en la literatura fantástica. La fama de los juegos basados en el personaje del brujo Geralt, me parece, no le han acarreado una fama enorme, porque muchos olvidan (o simplemente no se interesan en averiguar) que el Wiedźmin no fue creado por CD Projekt RED.Por suerte, como les decía, entre los lectores ya Sapkowsky era un referente aún antes de que salieran los juegos.
Tenía entendido que estaba trabajando otra serie de libros, basados en las Guerras Husitas, así que hace poco decidí buscar si ya estaban disponibles en español. Y resulta, que además de los dos libros de dicha saga, me encontré Víbora, un tercero completamente distinto, ambientado en Afganistán durante la invasión soviética.
No obstante, no es de eso que quiero hablarles, sin…