the-crypt/script/player camera.gd

46 lines
1.2 KiB
GDScript3
Raw Normal View History

2020-07-17 11:03:22 -05:00
extends Camera2D
const LOOK_X_FACTOR = 0.2
const SHIFT_TRANS = Tween.TRANS_SINE
const SHIFT_EASE = Tween.EASE_OUT
const SHIFT_DURATIOIN = .5
var facing = 0
var prev_facing = facing
2020-07-17 19:18:59 -05:00
2020-07-17 11:03:22 -05:00
onready var prev_pos = get_camera_position()
onready var tween: Tween = $Tween
onready var parent = get_parent()
func _ready():
set_limits()
func set_limits():
var tilemap: TileMap = get_tree().get_nodes_in_group("Tilemap")[0]
var map_limits = tilemap.get_used_rect()
var map_cellsize = tilemap.cell_size
2020-07-17 19:18:59 -05:00
limit_left = (map_limits.position.x + 0.5) * map_cellsize.x
limit_right = (map_limits.end.x - 0.5) * map_cellsize.x - 1
limit_top = (map_limits.position.y + 0.5) * map_cellsize.y
limit_bottom = (map_limits.end.y - 0.5) * map_cellsize.y
2020-07-17 11:03:22 -05:00
func _process(delta):
if facing != 0:
prev_facing = facing
check_facing()
func check_facing():
if parent.input_direction != 0:
facing = parent.input_direction
var target = get_viewport_rect().size.x * parent.input_direction * LOOK_X_FACTOR
tween.interpolate_property(self, "position:x", position.x, target, SHIFT_DURATIOIN, SHIFT_TRANS, SHIFT_EASE)
tween.start()
func _on_grounded_updated(is_grounded):
drag_margin_v_enabled = !is_grounded