Arcade racing demo got Godot 3.3
Vous ne pouvez pas sélectionner plus de 25 sujets
Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
|
- extends Line2D
-
-
- export var max_length : int = 100 setget _set_max_length
- export var distance_between_points : float = 10
- export var decay_time : float = 0.1 setget _set_decay_time
-
- var last_point = null
- onready var parent = get_parent()
- onready var timer = $Timer
-
- func _set_max_length(l : int) -> void:
- if l > 0:
- max_length = l
-
- func _set_decay_time(d : float) -> void:
- if d >= 0:
- decay_time = 0
-
-
- func _ready():
- set_as_toplevel(true)
- show_behind_parent = true
- _reset_timer()
-
- func _process(delta):
- rotation = parent.rotation
- if points.size() < max_length:
- var point = _get_point()
- if point != null:
- add_point(point)
- if points.size() >= max_length:
- remove_point(0)
-
- func _get_point():
- var point = parent.global_position
- if last_point != null and point.distance_to(last_point) < distance_between_points:
- return null
- last_point = point
- return point
-
- func _reset_timer():
- if decay_time > 0:
- timer.stop()
- timer.start(decay_time)
-
-
- func _on_decay_timeout():
- if points.size() > 0:
- remove_point(0)
- _reset_timer()
|