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
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°).
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.
Img:
ZOOM 300%:
Ahora ya solo tenemos que mostrar el punto, pero en vez de eso vamos a dibujar una línea:
Gracias RG por tu ayuda ya me ha quedado todo esto muy claro.
Muchisimas gracias
Un saludo
Dos años en SCENEBETA
Click aquí para ver la Entrada de Bitácora.