source: Studio/Camera.gd@ 0249beb

sandbox
Last change on this file since 0249beb was f7b09c8, checked in by Kevin Chapman <victory2b@…>, 4 years ago

First Draft of world test with working movement and loading screen.

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[f7b09c8]1#extends Camera
2
3# enum = {
4# MODE_PLAYER,
5# MODE_FOLLOW,
6# MODE_ZOOM
7#}
8
9#const SNAP_DISTANCE = 0.05
10#const TARGET_VECTOR = Vector3(0,0,-1) # Targeting vector/angle, relative to target node. Multiplied by "distance".
11#const MIN_DISTANCE = 0.5
12#const MAX_DISTANCE = 2.5
13#const UP = Vector3(0,1,0)
14
15#export var speed = 2.0
16
17#var anchor # To bring the camera back once it needs to. (Transform)
18#var target # Node to follow or zoom on. (Node)
19#var distance # Distance when zooming in or out. (float)
20#var mode # Currently active mode. (int)
21
22#func follow(target_node):
23# if !is_processing():
24# anchor = transform
25# set_process(true)
26# distance = 1.0
27# target = target_node
28# mode = MODE_FOLLOW
29
30#func zoom(target_node):
31# if !is_processing():
32# anchor = transform
33# set_process(true)
34# distance = 1.0
35# target = target_node
36# mode = MODE_ZOOM
37
38#func go_to_player():
39# target = null
40# mode = MODE_PLAYER
41# set_process(true)
42
43#func snap_to_player():
44# transform = anchor
45# set_process(false)
46
47#func _ready():
48# set_process(false)
49# mode = MODE_PLAYER
50# anchor = transform
51# distance = 1.0
52
53#func _process(delta): match mode:
54# MODE_PLAYER:
55# var newTransform = transform.interpolate_with(anchor, delta * speed)
56# if newTransform.origin.distance_to(anchor.origin) < SNAP_DISTANCE:
57# transform = anchor
58# set_process(false)
59# else:
60# transform = newTransform
61# MODE_FOLLOW:
62# distance = clamp(distance + delta / 8, 1.0, MAX_DISTANCE)
63# var targetTransform = target.global_transform
64# targetTransform.origin += targetTransform.basis.xform(TARGET_VECTOR * distance)
65# global_transform = global_transform.interpolate_with(targetTransform, delta * speed)
66# look_at(target, UP)
67# MODE_ZOOM:
68# distance = clamp(distance - delta / 4, MIN_DISTANCE, 1.0)
69# var targetTransform = target.global_transform
70# targetTransform.origin += targetTransform.basis.xform(TARGET_VECTOR * distance)
71# global_transform = global_transform.interpolate_with(targetTransform, delta * speed)
72# look_at(target, UP)
Note: See TracBrowser for help on using the repository browser.