Anuncios Google

Sacar un punto concreto en una imagen [Luadev][Thanks RG :D]

Buenas a todos. Tengo un problemilla y este creo que es dificil de solucionar.

A ver lo que quiero hacer es mi personaje dispare desde su arma. Aparentemente esto es fácil, pero el problema es que roto (Giro) la imagen.

Me explico:

Como ejemplo usaremos esta imagen donde la parte azul es el arma.

ZOOM 300% | Dimesiones reales: 26X26

 

Entonces si el soldado mira a la derecha debemos disparar desde las coordenadas X+25, Y+15.

Pero y si roto la imagen 45 grados hacia la derecha??

Como sé desde que coordenadas tengo que disparar?? Lo que necesito es una formula para hallar las coordenadas desde las que disparar, para que el disparo coincida con el arma.

 

He conseguido solucionar esto usando una imagen de 50X50 en la que el cañon del arma representa el punto 25,25 pero obviamente no es una opción viable, ya que al rotar, no lo hace bien.

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

En realidad no es tan

En realidad no es tan difícil, sólo hace falta un poco de trigonometría. Primero hay que notar que al rotar la imagen (respecto a su centro, ojo) el arma describe un círculo imaginario de radio 13 ( o cerca de xD) tal que:

Las coordenadas de cualquier punto sobre ese círculo serán ( x+rcosɵ , y+rsinɵ ), donde x,y son las coordenadas de la img (centrada, insisto), r es el radio del círculo dibujado y ɵ es el ángulo que rotó la imagen (CREO que LuaDEV rota las imágenes en sentido antihorario, así que si quisieras rotar la img 45° en sentido horario, habría que indicar -45, o usar su conjugado que serían 315°).

Imagen de jorge_97

Vale, sí, más que dificil es

Vale, sí, más que dificil es engorroso.

Bueno gracias a tu comentario he podido hacerlo. Modificando la imagen y algunas cosillas más. Aqui dejo como lo hice por si a alguien le sirve:

Primero cambiamos las dimensiones, he puesto 30X30.

Bien ahora sacamos el ángulo del arma.

ang=math.rad(p.r+20)
--p.r es el ángulo en grados con el que hemos rotado la imagen, añadimos 20 porque es la distancia en grados que dista desde el arma al grado 0. En Lua el grado 0 es la derecha

Img:

ZOOM 300%:

Ahora ya solo tenemos que mostrar el punto, pero en vez de eso vamos a dibujar una línea:

x=13+p.x+15*math.cos(ang)
--13 es el centro de la imagen sin contar los bordes que he añadido
--Radio 15 (30/2)
y=13+p.y+15*math.sin(ang)
--Igual que X
draw.line(x,y,x+math.cos(math.rad(p.r))*40,y+math.sin(math.rad(p.r))*40,azul)
--Lo mostramos pero manteniendo en ángulo original, ya que el angulo+20 solo lo necesitabamos para sacar el punto en la imagen

 

 

Gracias RG por tu ayuda ya me ha quedado todo esto muy claro.

Muchisimas gracias

Un saludo


Risa Dos años en SCENEBETA Risa

Click aquí para ver la Entrada de Bitácora.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.