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)