Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Spatial
- export var ZoomSpeed = 0.5
- export var RotateSpeed = 0.15
- var Distance
- var oldDistance
- var newDistance
- var zoom_level = 1
- var moveCam = false
- onready var ZoomTween = get_node("ZoomLevel")
- # Called when the node enters the scene tree for the first time.
- func _ready():
- # set as the top level
- set_as_toplevel(true)
- # hide the helper mesh
- $XRotate/HelperMesh.hide()
- func _process(delta):
- # get input from controller
- var xRotateAmount = Input.get_action_strength("cam_down") - Input.get_action_strength("cam_up")
- var yRotateAmount = Input.get_action_strength("cam_right") - Input.get_action_strength("cam_left")
- # store the toggle_distance action
- var toggle_distance = Input.is_action_just_pressed("toggle_distance")
- # rotate yRotate node depending on yRotateAmount
- rotate_y(-yRotateAmount * RotateSpeed)
- # rotate xRotate node
- $XRotate.rotate_x(-xRotateAmount * RotateSpeed)
- # increase zoom level if we have toggled the distance
- if toggle_distance:
- zoom_level += 1
- _update_distance()
- # check the status of zoom level and set Distance accordingly
- if zoom_level == 1:
- oldDistance = 20
- Distance = 10
- elif zoom_level == 2:
- Distance = 15
- oldDistance = 10
- elif zoom_level == 3:
- Distance = 20
- oldDistance = 15
- # reset zoom level if we exceed it
- if zoom_level > 3:
- zoom_level = 1
- Distance = 10
- func _update_distance():
- # set the distance of the camera
- ZoomTween.interpolate_property($XRotate/Camera, "XRotate/Camera.transform.origin.z", oldDistance, Distance, ZoomSpeed, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT, 0)
- ZoomTween.start()
- print ("ZoomTween Started")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement