Advertencia
  • Directiva de privacidad europea

    Esta página web usa cookies para gestionar la autentificación de usuarios, la navegació y otras funciones. Usando esta página web estas aceptando que guarde cookies en tu dispositivo.

    View e-Privacy Directive Documents

    Has rechazado el uso de cookies. Esta decisión puede ser cambiada.

Tutorial nº 21: Mover la cámara con el ratón / Nivel principiante

Imprimir
Ratio:  / 8
MaloBueno 
Categoría: Introducción a Blender 2.6x
Publicado el 24 Enero 2013 Visto: 8316

Mover la cámara con el ratón

 

En este tutorial aprenderemos a mover la vista con el ratón, como en los juegos de vista en tercera persona.






######################### SCRIPT ###################################
import bge
from bge import render
g=bge.logic
scene = g.getCurrentScene()



co = bge.logic.getCurrentController()
o= co.owner

#sensor
mouse = co.sensors["mousesensor"]

#objects
Cube= scene.objects["Cube"]
cameraTarget= scene.objects["cameraTarget"]

#####mouse movemente
 
movSpeed = 0.3
rotSpeed = (0.005, 0.005)
 
 # mouse look
x = (render.getWindowWidth() / 2 - mouse.position[0])
y = -(render.getWindowHeight() / 2 - mouse.position[1])

 
Cube.applyRotation((0 , 0, int(x) * rotSpeed[0]), False)
cameraTarget.applyRotation((int(y) * rotSpeed[1], 0, 0), True)
render.setMousePosition(int(render.getWindowWidth() / 2), int(render.getWindowHeight() / 2))

 

 

Script con rotación limitada. Por petición de algunos usuarios.

Para que este script funcione hay que añadir una propiedad llamada "totaly"  en el camera target.


import bge
from bge import render
g=bge.logic
scene = g.getCurrentScene()



co = bge.logic.getCurrentController()
o= co.owner

#sensor
mouse = co.sensors["mousesensor"]

#objects
Cube= scene.objects["Cube"]
cameraTarget= scene.objects["cameraTarget"]

#####mouse movemente
    
movSpeed = 0.3
rotSpeed = (0.005, 0.005)
    
    # mouse look
x = (render.getWindowWidth() / 2 - mouse.position[0])
y = -(render.getWindowHeight() / 2 - mouse.position[1])


##### limitar la rotación del eje y

ymax=1.16
ymin=-1.3

o["totaly"]= o["totaly"]+int(y) * rotSpeed[1]

print (o["totaly"])    # Esto muestra en consola los valores, para elegir el máximo y el mínimo.

if o["totaly"]< ymax and o["totaly"]>ymin:
    cameraTarget.applyRotation((int(y) * rotSpeed[1], 0, 0), True)

Cube.applyRotation((0 , 0, int(x) * rotSpeed[0]), False)
render.setMousePosition(int(render.getWindowWidth() / 2), int(render.getWindowHeight() / 2))

 

Comentarios   

 
#21 Guest 24-11-2014 14:35
saludos, una pregunta cuantas caras (poligonos) debe tener un juego en blender como maximo, estoy haciendo uno que tiene 310000 poligonos.
 
 
#22 Guest 24-11-2014 14:39
otra pregunta, como puedo hacer para que durante la ejecucion del juego solo se renderizen los objetos que estan siendo vistos por la camara y que no se renderizen los que están detrás de ella (me refiero a algo parecido con lo que se hace con "occlusion culling" en unity pero en blender), gracias.
 
 
#23 Guest 03-09-2016 10:22
Tengo un problema, en mi cámara me rota en forma cilíndrica cuando voy de arriba a abajo
 

Escribir un comentario

Código de seguridad
Refescar

feed-image Entradas del canal electrónico