Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node2D
- class_name Trail
- export var length = 10
- export var strength = 2.0
- export var positions_update_delta = 0.5
- var positions = []
- var update_timer = 0.0
- var trail_start_index = 0
- var draw_trail = false
- func _ready():
- set_physics_process(true)
- init_position()
- func reset():
- positions = []
- update_timer = 0.0
- trail_start_index = 0
- draw_trail = false
- init_position()
- func init_position():
- for x in range(0, length+1):
- positions.append(global_position)
- func _physics_process(delta):
- update_timer -= delta
- if (update_timer <= 0):
- update_timer = positions_update_delta * delta
- add_position()
- update()
- func add_position():
- move_all_positions_array()
- positions[length] = global_position
- if (draw_trail):
- trail_start_index = max(trail_start_index - 1, 0)
- else:
- trail_start_index = clamp(trail_start_index+1, 0, length)
- func move_all_positions_array():
- for i in range(0, length):
- positions[i] = positions[i+1]
- func _draw():
- draw_set_transform(-global_position, 0, Vector2(1,1))
- for x in range(trail_start_index, length):
- if ((positions[x] - positions[x+1]).length() != 0):
- draw_circle(positions[x], strength * (x-trail_start_index), ColorTheme.Colors[4])
- draw_line(positions[x], positions[x+1], ColorTheme.Colors[4], strength * (x-trail_start_index) * 2.0)
- func set_draw_trail(x):
- draw_trail = x
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement