mirror of
https://github.com/HarmonyHoney/tiny_crate.git
synced 2026-07-30 11:10:17 +00:00
45 lines
1,019 B
GDScript
45 lines
1,019 B
GDScript
tool
|
|
extends Actor
|
|
class_name Treadmill
|
|
|
|
export var tread_speed := -1.0 setget _set_tread_speed
|
|
export var length := 1 setget _set_length
|
|
export var editor_move := 0 setget _set_editor_move
|
|
|
|
var node_sprite : Sprite
|
|
|
|
const SHADER = preload("res://Shader/scrollx.shader")
|
|
|
|
func _ready():
|
|
# editor and game code
|
|
node_sprite = $Sprite
|
|
node_sprite.material.shader = SHADER
|
|
node_sprite.material = node_sprite.material.duplicate(true)
|
|
|
|
_set_tread_speed(tread_speed)
|
|
_set_length(length)
|
|
|
|
if Engine.editor_hint:
|
|
return # return if in editor
|
|
|
|
# game only code
|
|
|
|
func _process(delta):
|
|
if Engine.editor_hint:
|
|
return
|
|
|
|
|
|
func _set_tread_speed(value):
|
|
tread_speed = value
|
|
if node_sprite:
|
|
node_sprite.flip_h = tread_speed > 0
|
|
node_sprite.material.set_shader_param("speed", abs(tread_speed * 8))
|
|
|
|
func _set_length(value):
|
|
length = max(1, value)
|
|
_set_hit_x(8 * length)
|
|
if node_sprite:
|
|
node_sprite.region_rect = Rect2(Vector2.ZERO, Vector2(8 * length, 8))
|
|
|
|
func _set_editor_move(value):
|
|
position.x += value * 8
|