Movimiento del raton Blender ge
Muy buenas, llevo buscando algún tiempo el código o bueno los comando/métodos en Python que te permitan saber si el ratón se está moviendo en x o en y. He buscado por la Api, pero no me queda nada claro, también me he bajado algunos scripts, pero o están desactualizados con la 1.6 o son demasiado complejos para que pueda desgranarlos. Si alguien me pudiese ayudar en esto, no busco un script, simplemente la forma de hacerlo en el Game Engine con Python. Un saludo.
3 Archivos adjunto(s)
Movimiento del raton Blender ge
Buenas, me acabo de acordar al responder un mensaje de este hilo que abrí y se quedó sin respuesta, y como no me gusta eso y ya lo solucioné pues os cuento:
La solución era sencilla y el script está en la Api de Blender, en la parte de rasterizer, justo lo que andaba buscando: http://www.blender.org/documentation...e, render.html.
Justo el código que sale en el enlace, se entiende en inglés, pero lo traduzco igual:
Código:
#script de mouse lok (algo, así como mirar con el ratón).
Import BGE.
# estos dos números que aparecen a continuación son la sensibilidad del ratón, el primero (1.0) en el eje X y el segundo (0.5) en el eje Y.
Scale = 1.0, 0.5.
Co = BGE, logic, getcurrentcontroller().
Obj = co, Owner.
# bien aquí están definidos los sensores y los actuadores, la parte entre corchetes ([. ]) hace referencia al nombre #del sensor real en Blender es decir el nombre del logic al que corresponda.
Mouse = co, sensors[mouse"].
Lmotion = co, Actuators[lmove"].
Wmotion = co, Actuators[wmove"].
# este método define la distancia que se desplaza el cursor cuando lo movemos por la pantalla del centro de la misma.
Def mousepos():
X = (bge, render, getwindowwidth() / 2 - Mouse, position[0]) * scale[0].
Y = (bge, render, getwindowheight() / 2 - Mouse, position[1]) * scale[1].
Return (x, y) #un return es la salida del método, por decirlo así, lo que dará de resultado.
# aquí nos fijamos que se crea una nueva variable de nombre Pos a la que se le asigna el valor de la salida del método anterior.
Pues = mousepos().
# aquí le asigna el primer valor que se le ha dado a Pos al asignarle el resultad del método anterior, pues [0] al primer #actuador de movimiento, al que se le ha dado el nombre interno de wmotion. Aparte se le asigna un modo, Tork, que #determina la forma de movimiento, es decir rotara con inercia.
Wmotion, uselocaltorque = false # esta expresión dice que el actuador no usara (false) las coordenadas locales.
Wmotion, Tork = ((0.0, 0.0, pos[0])).
# aquí le asigna el segundo valor que se le ha dado a Pos al asignarle el resultad del método anterior, pues [1] al #segundo actuador de movimiento, al que se le ha dado el nombre interno de lmotion. Aparte se le asigna un modo, #Tork, que determina la forma de movimiento, es decir rotara con inercia.
Lmotion, uselocaltorque = true # esta expresión dice que el actuador usara (true) las coordenadas locales.
Lmotion, Tork = ((-pos[1], 0.0, 0.0)).
# estas expresiones dan la orden de activar los dos actuadores, una vez modificados a nuestra conveniencia.
Co, activate (lmotion).
Co, activate (wmotion).
# por último, se vuelve a centrar el cursor del ratón en el centro de la pantalla.
Bge, render, setmouseposition(int(bge, render, getwindowwidth() / 2), int(bge, render, getwindowheight() / 2))
Bien, traducido y explicado. Ahora solo queda hacer las conexiones, os pongo dos imágenes de cómo tienen que ser:
Los logics:
Archivo adjunto 172511
Las propiedades, tiene que ser un objeto dinámico, static no sirve con el script anterior:
Archivo adjunto 172512
Adjunto el (*.blend).
Espero que le sirva a alguien, saludos.
-- IMÁGENES ADJUNTAS --
https://foro3d.com/attachment.php?attachmentid=172511
https://foro3d.com/attachment.php?attachmentid=172512
https://foro3d.com/attachment.php?attachmentid=172513