Rotacion de Actor segun posicion del mouse

Si tienes alguna duda sobre cómo usar pilas, o tienes problemas para instalar o hacer algo en pilas comentalo aquí.

Rotacion de Actor segun posicion del mouse

Notapor eka » Mié Mar 30, 2011 9:31 am

Holas! Soy nuevo en el foro, pero visito la pagina desde hace mucho.

Pilas version Python

Queria saber como hacer que un actor rote segun la posicion del cursor del mouse.

Gracias por Pilas!

Saludos

Eka
eka
 
Mensajes: 3
Registrado: Mié Mar 30, 2011 9:28 am

Re: Rotacion de Actor segun posicion del mouse

Notapor hugoruscitti » Mié Mar 30, 2011 3:31 pm

Hola Eka, bienvenido.

Para hacer que un actor rote segun la posición del
mouse podrías usar la función "obtener_angulo_entre" que
escribo a continuación en un ejemplo.

import pilas
import math
pilas.iniciar()

def obtener_angulo_entre(punto_a, punto_b):
(x, y) = punto_a
(x1, y1) = punto_b
return math.degrees(-math.atan2(y1 - y, x1 -x))


nave = pilas.actores.Nave()

def mover_la_nave(evento):
posicion_del_mouse = (evento.x, evento.y)
posicion_de_la_nave = (nave.x, nave.y)
nave.rotacion = 90 + obtener_angulo_entre(posicion_de_la_nave, posicion_del_mouse)


pilas.eventos.mueve_mouse.conectar(mover_la_nave)


pilas.ejecutar()


El ejemplo muestra una nave que al mover el mouse comienza a rotar, incluso
si pulsas el teclado mientras mueves el mouse observarás que la nave
respeta las dos órdenes.

En cuanto tenga un tiempo libre voy a colocar esa función de rotación dentro
de pilas, para que sea mas sencilla utilizarla... Ah, también voy a escribir
algo del evento pycamp, donde trabajamos un montón en pilas...

Contanos si el ejemplo te sirve, o si quieres que te ayudemos en algo más.
Gracias por usar pilas !!
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Rotacion de Actor segun posicion del mouse

Notapor eka » Mié Mar 30, 2011 3:50 pm

Buenisimo el ejemplo muchas gracias!

PD: lei que SFML es mucho mas rapido que SDL, es asi? Conviene usar pySFML sobre PyGame con Pilas?

Saludos
eka
 
Mensajes: 3
Registrado: Mié Mar 30, 2011 9:28 am

Re: Rotacion de Actor segun posicion del mouse

Notapor hugoruscitti » Mié Mar 30, 2011 4:55 pm

eka escribió:PD: lei que SFML es mucho mas rapido que SDL, es asi? Conviene usar pySFML sobre PyGame con Pilas?


Sí, efectivamente es mas rápido usar SFML en pilas, por eso es la biblioteca
que se elige automáticamente cuando las dos están disponibles.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Re: Rotacion de Actor segun posicion del mouse

Notapor lukasgaleano » Mar Abr 12, 2011 4:53 pm

Que tal hugo, el codigo que pusiste funciona, pero a la hora de probarlo a mi me genera un retardo en el movimiento del personaje, depues de probarlo un poco.

Habia otra manera de obtener el mismo resultado con otro codigo?, y si tambien se puede aplicar a las señales de la flechas de telado?


Es decir, estoy trantado hacer que mi personaje se direccione segun la posicion de controlador ( sea mouse o teclado)

desde ya muchas Gracias!!!

Excelente trabajo!!!!
lukasgaleano
 
Mensajes: 19
Registrado: Lun Dic 06, 2010 6:57 pm

Re: Rotacion de Actor segun posicion del mouse

Notapor hugoruscitti » Jue Abr 14, 2011 4:56 am

Si, hay otra forma de hacer lo mismo, pero requiere que tengas
la última versión del repositorio.

Básicamente, la otra solución sería tener una función
que se ejecute cada X milisegundos, y que en cada
ejecución vea la posición del mouse y cambie la rotación
del actor:

import pilas                                                                                            

pilas.iniciar(usar_motor='pygame')

b = pilas.actores.Nave()

def mover_nave():
x, y = pilas.motor.obtener_posicion_del_mouse()
b.rotacion = 90 -pilas.utils.obtener_angulo_entre((b.x, b.y), (x, y))


pilas.ejecutar_cada(0.05, mover_nave)
pilas.ejecutar()
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina


Volver a Consultas, problemas o bugs.

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado