Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Camera
- export var mouse_sensitivity = 1200
- onready var Character = get_parent()
- var screen_size = OS.get_screen_size()
- var window_size = OS.get_window_size()
- var can_rotate = false
- func _ready():
- OS.set_window_position(screen_size*0.5 - window_size*0.5)
- func _enter_tree():
- Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
- func _exit_tree():
- Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
- func _input(event):
- var toggle = false
- if Input.is_action_pressed("ui_cancel"):
- toggle = true
- if toggle:
- Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
- if not toggle:
- Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
- if event is InputEventMouseMotion:
- if can_rotate:
- Character.set_rotation(rearcamera_left_right(0))
- Character.get_node("LeftRight").set_rotation(frontcamera_left_right(-event.relative.x / mouse_sensitivity))
- Character.get_node("LeftRight/UpDown").set_rotation(frontcamera_up_down(-event.relative.y / mouse_sensitivity))
- else:
- Character.set_rotation(rearcamera_left_right(-event.relative.x / mouse_sensitivity))
- set_rotation(rearcamera_up_down(-event.relative.y / mouse_sensitivity))
- if event is InputEventMouseButton:
- if event.button_index == BUTTON_WHEEL_UP and event.is_pressed():
- $ZoomCam.play("ZoomIn",CONNECT_DEFERRED)
- if event.button_index == BUTTON_WHEEL_DOWN and event.is_pressed():
- $ZoomCam.play("ZoomOut",CONNECT_DEFERRED)
- if event.button_index == BUTTON_MIDDLE and event.is_pressed():
- var pos = get_translation()
- can_rotate = true
- Character.get_node("LeftRight/UpDown/FrontCamera").set_current(true)
- Character.get_node("LeftRight/UpDown/FrontCamera").set("translation", Vector3(0, pos.y, -pos.z))
- Character.get_node("LeftRight").set_rotation(Vector3(0,0,0))
- elif not event.is_pressed():
- can_rotate = false
- Character.get_node("LeftRight/UpDown/FrontCamera").set_current(false)
- Character.get_node("LeftRight").set_rotation(Vector3(0,0,0))
- func rearcamera_left_right(rcam_rot):
- return Character.get_rotation() + Vector3(0, rcam_rot, 0)
- func rearcamera_up_down(rcam_rot):
- var rcam_rotation = get_rotation() + Vector3(rcam_rot, 0, 0)
- rcam_rotation.x = clamp(rcam_rotation.x, PI/-2, PI/2)
- return rcam_rotation
- func frontcamera_left_right(fcam_rot):
- return Character.get_node("LeftRight").get_rotation() + Vector3(0, fcam_rot, 0)
- func frontcamera_up_down(fcam_rot):
- var fcam_rotation = Character.get_node("LeftRight/UpDown").get_rotation() + Vector3(fcam_rot, 0, 0)
- fcam_rotation.x = clamp(fcam_rotation.x, PI/-10, PI/10)
- return fcam_rotation
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement