48 lines
1.1 KiB
GDScript3
48 lines
1.1 KiB
GDScript3
|
tool
|
||
|
extends Node2D
|
||
|
class_name Stomp
|
||
|
|
||
|
export var to_point := Vector2(0, 0) setget set_to_position
|
||
|
export var duration := 2.0 setget set_duration
|
||
|
export var delay := .5 setget set_delay
|
||
|
export(String, "UP_DOWN", "LEFT_RIGHT") var g = "UP_DOWN"
|
||
|
|
||
|
onready var tween = $Tween
|
||
|
onready var sprite = $Sprite
|
||
|
|
||
|
var _is_ready = false
|
||
|
|
||
|
func _ready() -> void:
|
||
|
_is_ready = true;
|
||
|
start_motion()
|
||
|
|
||
|
func _on_DeathZone_body_entered(body:Node) -> void:
|
||
|
if body.name == "Player":
|
||
|
body.die()
|
||
|
|
||
|
func set_to_position(val):
|
||
|
print("set_to_position")
|
||
|
|
||
|
to_point = val
|
||
|
start_motion()
|
||
|
|
||
|
func set_duration(val):
|
||
|
print("set_duration")
|
||
|
duration = val
|
||
|
start_motion()
|
||
|
|
||
|
func set_delay(val):
|
||
|
print("set_delay")
|
||
|
delay = val
|
||
|
start_motion()
|
||
|
|
||
|
func start_motion():
|
||
|
if not _is_ready: return
|
||
|
|
||
|
print("Stomp Start Motion")
|
||
|
sprite.position = Vector2.ZERO
|
||
|
tween.stop_all()
|
||
|
tween.repeat = true
|
||
|
tween.interpolate_property(sprite, "position", Vector2.ZERO, to_point, duration, Tween.TRANS_LINEAR, Tween.EASE_IN, delay)
|
||
|
tween.interpolate_property(sprite, "position", to_point, Vector2.ZERO, duration, Tween.TRANS_LINEAR, Tween.EASE_IN, duration+(delay*2))
|
||
|
tween.start()
|