-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcamMov.py
111 lines (81 loc) · 3.47 KB
/
camMov.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#======================================================================#
#
# Team:
# Hunter Quant
# Edward Pryor
# Nick Marasco
# Shane Peterson
# Brandon Williams
# Jeremy Rose
#
# Last modification: 10/14/14
#
# Description: Separate camera controls from the main game
#
#======================================================================#
#from pausemenu import PauseMenu
import sys
from direct.gui.OnscreenImage import OnscreenImage
from math import pi,sin,cos
from direct.task import Task
from direct.showbase.DirectObject import DirectObject
class CameraMovement(DirectObject):
# Takes in a playerModel and sets up key listeners
def __init__(self, playerModel):
#Make keyMap globa
self.keyMap = base.keyMap
#Reparent camera to playerModel
self.playerModel = playerModel
camera.reparentTo(playerModel)
camera.setZ(base.camera, 4)
# Determines the movement and pitch of the camera
def cameraControl(self,task):
dt = globalClock.getDt()
if(dt > .20):
return task.cont
# Calculate pitch of camera based on mouse position
mouse = base.win.getPointer(0)
x = mouse.getX()
y = mouse.getY()
#Updates camera facing based on mouse position
if base.win.movePointer(0, base.win.getXSize()/2, base.win.getYSize()/2):
self.playerModel.setH(self.playerModel.getH() - (x - base.win.getXSize()/2)*0.1)
base.camera.setP(base.camera.getP() - (y - base.win.getYSize()/2)*0.1)
#Limits verticle view
if base.camera.getP() >= 90:
base.camera.setP(90)
if base.camera.getP() <= -90:
base.camera.setP(-90)
# Changes the position of the playerModel based on which keys are currently pressed
if(self.keyMap["forward"] == True):
if(self.keyMap["left"] == True):
self.playerModel.setX(self.playerModel, -25 * dt)
self.playerModel.setY(self.playerModel, 30 * dt)
return task.cont
elif(self.keyMap["right"] == True):
self.playerModel.setX(self.playerModel, 25 * dt)
self.playerModel.setY(self.playerModel, 30 * dt)
return task.cont
else:
self.playerModel.setY(self.playerModel, 30 * dt)
return task.cont
elif(self.keyMap["backward"] == True):
if(self.keyMap["left"] == True):
self.playerModel.setX(self.playerModel, -25 * dt)
self.playerModel.setY(self.playerModel, -30 * dt)
return task.cont
elif(self.keyMap["right"] == True):
self.playerModel.setX(self.playerModel, 25 * dt)
self.playerModel.setY(self.playerModel, -30 * dt)
return task.cont
else:
self.playerModel.setY(self.playerModel, -30 * dt)
return task.cont
elif(self.keyMap["left"] == True):
self.playerModel.setX(self.playerModel, -25 * dt)
return task.cont
elif(self.keyMap["right"] == True):
self.playerModel.setX(self.playerModel, 25 * dt)
return task.cont
else:
return task.cont