can someone help me make a good mouse scrip for a first person shooter
i want one that limits the motion so that i cant look over 90 degrees up or down
thanks for volenteering
can someone help me make a good mouse scrip for a first person shooter
i want one that limits the motion so that i cant look over 90 degrees up or down
thanks for volenteering
-This is the Quakemousetest script modified.You must have the Camera
rotation up or down in xX direction:
from GameLogic import *
from Rasterizer import *
from math import *Cont = getCurrentController()
Own = Cont.getOwner()
Sens = Cont.getSensors()
Sensor = Sens[0]
######## Matrix2Euler ########
mat = Own.getOrientation()
size = [1,1,1]
def mat2euler(mat, size):
scale = [0.0, 0.0, 0.0]
if size[0]!=0.0:
scale[0] = 1.0/size[0]
if size[1]!=0.0:
scale[1] = 1.0/size[1]
if size[2]!=0.0:
scale[2] = 1.0/size[2]
angle_y = -asin(mat[0][2] * scale[0])
C = cos(angle_y)
if abs(angle_y)>1.0e-10:
C = 1.0/C
angle_x = atan2((mat[1][2] * scale[1]) * C, (mat[2][2] * scale[2]) * C)
angle_z = atan2((mat[0][1] * scale[0]) * C, (mat[0][0] * scale[0]) * C)
else:
angle_x = 0.0
angle_z = -atan2((mat[1][0] * scale[1]), (mat[1][1] * scale[1]))
return (angle_x, angle_y, angle_z)rot = mat2euler(mat,size)
rot_x = rot[0]Height = getWindowHeight()/2
Width = getWindowWidth()/2get current mouse position
Xpos = Sensor.getXPosition()
Ypos = Sensor.getYPosition()get actuators
RightMove = Cont.getActuator(“Right”)
LeftMove = Cont.getActuator(“Left”)
UpMove = Cont.getActuator(“Up”)
DownMove = Cont.getActuator(“Down”)check positions relative to old position
Mouse going right
if (Xpos > Width):
Move right
XDiff = Xpos - Width
RightMove.setDRot(0,(XDiff /Own.move),0,1)
addActiveActuator(RightMove,1)Mouse going left
if (Xpos < Width):
Move left
XDiff = Xpos - Width
LeftMove.setDRot(0,(XDiff/Own.move),0,1)
addActiveActuator(LeftMove,1)Mouse going up
if (Ypos < Height):
Move up
YDiff = Ypos - Height
if rot_x < -2.7 :
YDiff = 0
UpMove.setDRot((YDiff/Own.move),0,0,1)
addActiveActuator(UpMove,1)Mouse going down
if (Ypos > Height):
Move down
YDiff = Ypos - Height
if rot_x > 0:
YDiff = 0
DownMove.setDRot((YDiff/Own.move),0,0,1)
addActiveActuator(DownMove,1)Shut off all actuator movements
addActiveActuator(LeftMove,0)
addActiveActuator(DownMove,0)
addActiveActuator(RightMove,0)
addActiveActuator(UpMove,0)Set the mouse to the center of the game screen
setMousePosition(Width,Height)
and of course the bricks set as the script tells.If you have probs give me an e-mail and I’ll send the blend file.
Ben
You didnt put anything in there to represent tabs…
when I quote it loses all tabs.But I think it can be simple to put in the line below def,if and for, a tab space.
thanks everyone
i tried to use the modified quakemousettest but it didnt work
can someone show me how to use it, or make an example file with the bricklogic in?