coordenadas normales a isométricas [solucionado]

Publicado por cristopher2545, Junio 12, 2021, 11:28:43 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

cristopher2545

hola a todos! estoy creando un juego estilo restauran city con vista isométrica, y todo iba bastante bien hasta que me tope con una pared la cual no puedo cruzar por mi propia cuenta espero ustedes puedan darme una mano!


estoy proyectando los sprites "normales" para que se vean como isométricos usando el código a continuación, y todo perfecto pero cuando quiero interactuar con los objetos estos usan las coordenadas de los sprites "normales" en vez de las nuevas coordenadas isométricas por ende no esta funcionando como debería, entiendo que debo usar una formula para convertir las coordenadas cartesianas en coordenadas isométricas pero honestamente no logro entenderlo.

aquí esta el código para proyectar


variables del objeto control muestra los tamaños de los sprites normales y los isometricos
[gml]
global.isoview=false

global.width_ortho=32
global.height_ortho=32
global.width_iso=78
global.height_iso=40

[/gml]

si aprietas espacio la vista cambia a isométrico y se ejecuta este código que esta dentro del objeto "vista cartesiana"

[gml]
if global.isoview=true
{
var isox,isoy;
isox=get_iso_x(x,y)
isoy=get_iso_y(x,y)

draw_sprite(s_iso_tile,0,isox,isoy)
[/gml]


los scrips "get_iso_x" y "get_iso_y" contienen lo siguiente respectivamente

[gml]
var xx,yy,px,py;
xx=(x - room_width/2)/global.width_ortho
yy=(y - room_height/2)/global.height_ortho

px=(xx-yy)*(global.width_iso/2) + room_width/2
py=(yy+xx)*(global.height_iso/2) + room_height/2

return px
[/gml]


[gml]
var xx,yy,px,py;
xx=(x - room_width/2)/global.width_ortho
yy=(y - room_height/2)/global.height_ortho

px=(xx-yy)*(global.width_iso/2) + room_width/2
py=(yy+xx)*(global.height_iso/2) + room_height/2

return py
[/gml]

usando ese codigo proyectas la vista y creas la ilusión de que es isométrico pero las coordenadas del mouse siguen estando igual, alguna idea de como arreglarlo?, adjunto el proyecto por si es mas sencillo verlo , estando abierto el juego aprieta la tecla arriba para cambiar al modo isométrico de antemano gracias!

cristopher2545

hola! gracias por responder!, añadí los códigos para probarlo y algo super extraño ocurrió, no funcionaba para nada, cambie las variables "iso_mouse_x" por "mouse_x" y empezo a funcionar parcialmente, el cursor se ve no centrado es decir que aunque no este sobre las tiles este funciona y es extraño trate de modificar variables y distancias pero nada, al menos ahora funciona parcialmente y eso esta genial!

te dejo el proyecto para que veas a lo que me refiero! y de nuevo gracias!

cristopher2545

Cita de: Void en Junio 14, 2021, 03:18:57 PM
Los scripts get_ortho_* no estan regresando nada, tenias que agregar un return para px y py respectivamente.

Dejo el editable arreglado.


maestro!, muchas gracias compañero me sacaste de este apuro!,  te lo agradezco muchísimo!

162 Visitantes, 1 Usuario
Marth