Mouselook.py for 2.5?

hi, i need an Mouselook For Blender 2.5, i tested my game on it and go super fast, but the mouse look.py doesnt work, did somebody have 1?? if yes give me the blend file for it, thx is someone helps

Post your script here and I can tell you what needs to be changed.

im using this one:

######################################################

MouseLook.py Blender 2.49

Tutorial for using MouseLook.py can be found at

www.tutorialsforblender3d.com

Released under the Creative Commons Attribution 3.0 Unported License.

If you use this code, please include this information header.

######################################################

define main program

def main():

set default values

Sensitivity = 0.0005
Invert = 1
Capped = False

import Rasterizer

import Rasterizer

get controller

controller = GameLogic.getCurrentController()

get the object this script is attached to

obj = controller.owner

get the size of the game screen

gameScreen = gameWindow(Rasterizer)

get mouse movement

move = mouseMove(gameScreen, controller, obj)

change mouse sensitivity?

sensitivity = mouseSen(Sensitivity, obj)

invert mouse pitch?

invert = mousePitch(Invert, obj)

upDown mouse capped?

capped = mouseCap(Capped, move, invert, obj)

use mouse look

useMouseLook(controller, capped, move, invert, sensitivity)

Center mouse in game window

centerCursor(controller, gameScreen, Rasterizer)

#####################################################

define game window

def gameWindow(Rasterizer):

get width and height of game window

width = Rasterizer.getWindowWidth()
height = Rasterizer.getWindowHeight()

return (width, height)
#######################################################

define mouse movement function

def mouseMove(gameScreen, controller, obj):

Get sensor named MouseLook

mouse = controller.sensors[“MouseLook”]

extract width and height from gameScreen

width = gameScreen[0]
height = gameScreen[1]

distance moved from screen center

x = width/2 - mouse.position[0]
y = height/2 - mouse.position[1]

initialize mouse so it doesn’t jerk first time

if obj.has_key(‘mouseInit’) == False:
obj[‘mouseInit’] = True
x = 0
y = 0

######### stops drifting on mac osx

if sensor is deactivated don’t move

if not mouse.positive:
x = 0
y = 0

######### – mac fix contributed by Pelle Johnsen

return mouse movement

return (x, y)

######################################################

define Mouse Sensitivity

def mouseSen(sensitivity, obj):

check so see if property named Adjust was added

if obj.has_key(‘Adjust’) == True:

Don’t want Negative values

if obj[‘Adjust’] < 0.0:
obj[‘Adjust’] = 0.0

adjust the sensitivity

sensitivity = obj[‘Adjust’] * sensitivity

return sensitivity

return sensitivity
#########################################################

define Invert mouse pitch

def mousePitch(invert, obj):

check to see if property named Invert was added

if obj.has_key(‘Invert’) == True:

pitch to be inverted?

if obj[‘Invert’] == True:
invert = -1
else:
invert = 1

return mouse pitch

return invert
#####################################################

define Cap vertical mouselook

def mouseCap(capped, move, invert, obj):

check to see if property named Cap was added

if obj.has_key(‘Cap’) == True:

import mathutils

import Mathutils

limit cap to 0 - 180 degrees

if obj[‘Cap’] > 180:
obj[‘Cap’] = 180
if obj[‘Cap’] < 0:
obj[‘Cap’] = 0

get the orientation of the camera to world axis

camOrient = obj.orientation

get camera Z axis vector

camZ = [camOrient[0][2], camOrient[1][2], camOrient[2][2]]

create camera z axis vector

vec1 = Mathutils.Vector(camZ)

get camera parent

camParent = obj.parent

get parent orientation to world axis

parentOrient = camParent.orientation

get parent z axis vector

parentZ = [parentOrient[0][2], parentOrient[1][2], parentOrient[2][2]]

create parent z axis vector

vec2 = Mathutils.Vector(parentZ)

find angle between two

angle = Mathutils.AngleBetweenVecs(vec1, vec2)

get amount to limit mouselook

capAngle = obj[‘Cap’]

get mouse up down movement

moveY = move[1] * invert

check capped angle against against camera z-axis and mouse y movement

if (angle > (90 + capAngle/2) and moveY > 0) or (angle < (90 - capAngle/2) and moveY < 0) == True:

no movement

capped = True

return capped

return capped
###############################################

define useMouseLook

def useMouseLook(controller, capped, move, invert, sensitivity):

get up/down movement

if capped == True:
upDown = 0
else:
upDown = move[1] * sensitivity * invert

get left/right movement

leftRight = move[0] * sensitivity * invert

Get the actuators

act_LeftRight = controller.actuators[“LeftRight”]
act_UpDown = controller.actuators[“UpDown”]

set the values

act_LeftRight.dRot = [ 0.0, 0.0, leftRight]
act_LeftRight.useLocalDRot = False

act_UpDown.dRot = [ upDown, 0.0, 0.0]
act_UpDown.useLocalDRot = True

Use the actuators

controller.activate(act_LeftRight)
controller.activate(act_UpDown)

#############################################

define center mouse cursor

def centerCursor(controller, gameScreen, Rasterizer):

extract width and height from gameScreen

width = gameScreen[0]
height = gameScreen[1]

Get sensor named MouseLook

mouse = controller.sensors[“MouseLook”]

get cursor position

pos = mouse.position

if cursor needs to be centered

if pos != [ width/2, height/2]:

Center mouse in game window

Rasterizer.setMousePosition(width/2, height/2)

already centered. Turn off actuators

else:

Get the actuators

act_LeftRight = controller.actuators[“LeftRight”]
act_UpDown = controller.actuators[“UpDown”]

turn off the actuators

controller.deactivate(act_LeftRight)
controller.deactivate(act_UpDown)
##############################################

Run program

main()

do you can change it??

Please use the code tags so it’s easier to read.

I use a modified version of raider’s mouselook. It uses to new API so make sure your 2.5 build is up to date if it doesn’t work.

import bge
from mathutils import Vector, Matrix, RotationMatrix

X_UPPER_LIMIT = 0.5
X_LOWER_LIMIT = -0.8
X_PIVOT = 'player camera pivot_x'
Y_PIVOT = 'player camera pivot_y'
SENSITIVITY = 7

def mouselookUpdate(cont):
	obl = bge.logic.getCurrentScene().objects
	pivot_x = obl[X_PIVOT]
	pivot_y = obl[Y_PIVOT]
	mouse = bge.logic.mouse

	mid = Vector([bge.render.getWindowWidth()/2,bge.render.getWindowHeight()/2])
	mpos = Vector(mouse.position)
	
	if not "ml_angle" in pivot_x:
		pivot_x["ml_x_mat"] = Matrix(*pivot_x.localOrientation).invert()
		pivot_x["ml_y_mat"] = Matrix(*pivot_y.localOrientation).invert()
		pivot_x["ml_angle"] = Vector([0,0])
		mpos = mid
    
	pivot_x["ml_angle"] += (mpos - mid)*-0.0002*SENSITIVITY
	pivot_x["ml_angle"][1] = max(min(pivot_x["ml_angle"][1],X_UPPER_LIMIT),X_LOWER_LIMIT)
	xmat = RotationMatrix(-pivot_x["ml_angle"][1],3,"X")
	zmat = RotationMatrix(-pivot_x["ml_angle"][0],3,"Z")
	omat = (xmat*zmat)*pivot_x["ml_x_mat"]
	
	pivot_x.localOrientation = omat.invert()
	pivot_y.localOrientation = (zmat*pivot_x["ml_y_mat"]).invert()
	
	bge.render.setMousePosition(int(mid[0]),int(mid[1]))

Hey Andrew,
I am trying to help someone with Blender 2.5 mouselook, but I don’t know much about the API, so I was wondering if you could help?

I copied and pasted your script into his blend, but it doesn’t seem to be working.

Please tell me what is wrong.
-Sunjay03

Attachments

SteveTheRagDoll.blend (130 KB)