-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcamera.py
More file actions
49 lines (45 loc) · 1.36 KB
/
camera.py
File metadata and controls
49 lines (45 loc) · 1.36 KB
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
import math
class Cam:
def __init__(self, pos=(0, 0, 0), rot=(0, 0)):
self.pos = list(pos)
self.rot = list(rot)
self.sensitivity = 500
self.mode = 0
def update_position(self, dt, keys):
s = dt / 2
if self.mode == 0:
x, y = s * math.sin(self.rot[1]), s * math.cos(self.rot[1])
if keys['W']:
self.pos[0] += x
self.pos[1] -= y
if keys['S']:
self.pos[0] -= x
self.pos[1] += y
if keys['A']:
self.pos[0] -= y
self.pos[1] -= x
if keys['D']:
self.pos[0] += y
self.pos[1] += x
if keys['SPACE']:
self.pos[2] += s
if keys['SHIFT']:
self.pos[2] -= s
else:
if keys['W']:
self.pos[1] -= s
if keys['S']:
self.pos[1] += s
if keys['A']:
self.pos[0] -= s
if keys['D']:
self.pos[0] += s
if keys['SPACE']:
self.pos[2] += s
if keys['SHIFT']:
self.pos[2] -= s
def update_rotation(self, dx, dy):
dx = dx * self.sensitivity / 100000
dy = dy * self.sensitivity / 100000
self.rot[0] += dy
self.rot[1] += dx