Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node2D
- # TODO: make this invisible if not on phone
- onready var back: Sprite = get_node("Back")
- onready var front: Sprite = get_node("Front")
- onready var back_size = back.region_rect.size
- onready var limits = {
- "x": [back.global_position.x - back_size.x/2, back.global_position.x + back_size.x/2],
- "y": [back.global_position.y - back_size.y/2, back.global_position.y + back_size.y/2]
- }
- export var ease_value: float = 0.25
- onready var deadzone = back_size.x*0.2
- var button_pressed = {
- "up": false,
- "down": false,
- "left": false,
- "right": false
- }
- # HACK: because keys dont get depressed when you kill this scene!!!
- func _ready():
- Input.action_release("ui_right")
- Input.action_release("ui_left")
- Input.action_release("ui_up")
- Input.action_release("ui_down")
- func _process(delta: float) -> void:
- if Input.is_mouse_button_pressed(1):
- front.global_position = lerp(front.global_position, get_global_mouse_position(), ease_value)
- front.global_position.x = clamp (front.global_position.x, limits.x[0], limits.x[1])
- front.global_position.y = clamp (front.global_position.y, limits.y[0], limits.y[1])
- else:
- front.global_position = lerp(front.global_position, back.global_position, ease_value)
- commit_buttons(pressed_buttons())
- func pressed_buttons():
- var direction = Vector2(front.global_position.x-back.global_position.x, front.global_position.y-back.global_position.y)
- var out = Vector2(0,0)
- if abs(direction.x) > deadzone:
- out.x = 1 if direction.x > 0 else -1
- if abs(direction.y) > deadzone:
- out.y = 1 if direction.y > 0 else -1
- return out
- func commit_buttons(pressed_buttons):
- if pressed_buttons.x != 0:
- if pressed_buttons.x == 1:
- if !button_pressed.right:
- Input.action_press("ui_right")
- button_pressed.right = true
- else:
- if !button_pressed.left:
- Input.action_press("ui_left")
- button_pressed.left = true
- else:
- if button_pressed.right:
- Input.action_release("ui_right")
- button_pressed.right = false
- if button_pressed.left:
- Input.action_release("ui_left")
- button_pressed.left = false
- if pressed_buttons.y != 0:
- if pressed_buttons.y == 1:
- if !button_pressed.down:
- Input.action_press("ui_down")
- button_pressed.down = true
- else:
- if !button_pressed.up:
- Input.action_press("ui_up")
- button_pressed.up = true
- else:
- if button_pressed.down:
- Input.action_release("ui_down")
- button_pressed.down = false
- if button_pressed.up:
- Input.action_release("ui_up")
- button_pressed.up = false
Add Comment
Please, Sign In to add comment