Re:Percorso interattivo esterno[risolto]

#75114

kimal73
Partecipante
  • Blenderista
  • Conversazioni totali3

Ho risolto tutti i problemi con l’autobaking del radiosity calcolato solo una volta anche per l’esterno.

Come si fa a cambiare lo script “mouse look.py” in modo tale da registrengere il movimento dell’oggetto solo alla rotazione orizzontale e non anche a quella verticale?

ok ci sono riuscito assegnando un attivatore motion server control alla rotazione UpDown.

ma ora il problema è allineare la camera al movimento dell’oggetto. L’oggetto “uomo” pare ruotare sì, ma in ritardo rispetto alla camera nonostante abbiano gli stessi parametri di controllo. Per chi non lo ricordasse, riporto qui il codice del mouselook.py

Code:
######################################################
#
# MouseLook.py aggiornato Blender 2.49
#
# Tutorial for using MouseLook.py can be found at
#
# http://www.tutorialsforblender3D.com
#
######################################################
# import Rasterizer
import Rasterizer

# get controller
controller = GameLogic.getCurrentController()

# get the object this script is attached to
player = controller.owner

# Get sensor named Mouse
mouse = controller.sensors[“Mouse”]

# Get the actuators
lookLeftRight = controller.actuators[“LookLeftRight”]
lookUpDown = controller.actuators[“LookUpDown”]

# get width and height of game window
width = Rasterizer.getWindowWidth()
height = Rasterizer.getWindowHeight()

# define mouse movement function
def mouseMove():

# distance moved from screen center
x = width/2 – mouse.position[0]
y = height/2 – mouse.position[1]

# intialize mouse so it doesn’t jerk first time
if player.has_key(‘mouseInit’) == False:
x = 0
y = 0
# bug in Add Property
# can’t use True. Have to use 1
player[‘mouseInit’] =1

# return mouse movement
return (x, y)

# get mouse movement from function
move = mouseMove()

# set mouse sensitivity
sensitivity = 0.001

# Amount, direction and sensitivity
leftRight = move[0] * sensitivity
upDown = move[1] * sensitivity

# set the values
lookLeftRight.useLocalDRot=0
lookLeftRight.dRot=[0.0,0.0,leftRight]
lookUpDown.dRot=[upDown,0.0,0.0]

# Use them
controller.activate(lookLeftRight)
controller.activate(lookUpDown)

# Center mouse in game window
Rasterizer.setMousePosition(width/2, height/2)
# set the values
lookLeftRight.setDRot( 0.0, 0.0, leftRight, False)
lookUpDown.setDRot( upDown, 0.0, 0.0, True)

# Use them
GameLogic.addActiveActuator(lookLeftRight, True)
GameLogic.addActiveActuator(lookUpDown, True)

# Center mouse in game window
Rasterizer.setMousePosition(width/2, height/2)

Niente, pensavo derivasse da una mancanza di allineamento tra l’asse di rotazione z della telecamera e quello dell’oggetto, ma nonostante li ho allineati perfettamente, la telecamera continua ad girare più velocemente lasciando indietro l’oggetto. ❓