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: https://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:
Las propiedades, tiene que ser un objeto dinámico, static no sirve con el script anterior:
Adjunto el (*.blend).
Espero que le sirva a alguien, saludos.