fix block sprite when changing

This commit is contained in:
Fabio 2024-08-18 20:13:49 +02:00
parent a1bb39eaeb
commit 2cd7b66d6c
11 changed files with 272 additions and 28 deletions

View file

@ -8,13 +8,30 @@ var is_touching_floor : bool = true
var jump_buffer_timer : float
var coyote_timer : float = 0.2
var input_direction = 0
@export var max_link_distance: float = 200.0
@export var max_link_distance: float = 70.0
var data_link: Line2D
var target_scale
@export var scale_duration: float = 0.5
var current_selected = "none"
var target_scale_player: Vector2 = Vector2(1, 1)
func _ready():
data_link = $data_link
func _unhandled_input(event):
if event.is_action_pressed("click"):
var nearest_block = find_nearest_block()
if nearest_block:
if nearest_block.scale == Vector2(0.5, 0.5) and self.scale == Vector2(2.0, 2.0):
nearest_block.scale_up()
scale_down_player()
elif nearest_block.scale == Vector2(1.0, 1.0) and self.scale == Vector2(1.0, 1.0):
nearest_block.scale_down()
scale_up_player()
func get_input(delta):
var left = Input.is_action_pressed("player_left")
var right = Input.is_action_pressed("player_right")
@ -85,3 +102,15 @@ func find_nearest_block() -> Node2D:
closest_distance = distance
closest_block = block
return closest_block
func start_scaling(target_node: Node2D, scale_value: Vector2):
var tween = create_tween()
tween.tween_property(target_node, "scale", scale_value, scale_duration)
func scale_up_player():
target_scale_player = Vector2(2.0, 2.0)
start_scaling(self, target_scale_player)
func scale_down_player():
target_scale_player = Vector2(1.0, 1.0)
start_scaling(self, target_scale_player)

View file

@ -1,29 +1,32 @@
extends StaticBody2D
@export var scale_up_target: Vector2 = Vector2(3.0, 3.0)
@export var scale_up_target: Vector2 = Vector2(1.0, 1.0)
@export var scale_down_target: Vector2 = Vector2(0.5, 0.5)
@export var scale_duration: float = 0.5
@export var ui_actions: Node
@export var small_sprite = preload("res://textures/block-orange.png")
@export var large_sprite = preload("res://textures/block-blue.png")
func _ready():
add_to_group("scalable_blocks")
if ui_actions == null:
ui_actions = get_parent().get_node("UILayer/UI")
#func _on_input_event(viewport, event, shape_idx):
#if event is InputEventMouseButton and event.pressed:
#if event.is_action_pressed("click"):
#if ui_actions.current_selected == "scale_up":
#scale_up()
#ui_actions.scale_up_player()
#elif ui_actions.current_selected == "scale_down":
#scale_down()
#ui_actions.scale_down_player()
func _process(delta):
change_sprite_based_on_scale()
func scale_up():
var tween = create_tween()
tween.tween_property(self, "scale", scale_up_target, scale_duration)
change_sprite_based_on_scale()
func scale_down():
var tween = create_tween()
tween.tween_property(self, "scale", scale_down_target, scale_duration)
change_sprite_based_on_scale()
func change_sprite_based_on_scale():
var sprite = $Sprite2D
if scale == Vector2(0.5, 0.5):
sprite.texture = small_sprite
elif scale == Vector2(1.0, 1.0):
sprite.texture = large_sprite

View file

@ -5,13 +5,13 @@ extends Node
var current_selected = "none"
var target_scale_player: Vector2 = Vector2(1, 1)
func _unhandled_input(event: InputEvent) -> void:
func _on_input_event(viewport, event, shape_idx):
if event.is_action_pressed("click"):
var nearest_block = player.find_nearest_block()
if nearest_block and current_selected == "scale_up":
nearest_block.scale_up()
scale_up_player()
elif nearest_block and current_selected == "scale_down":
elif nearest_block:
nearest_block.scale_down()
scale_down_player()
@ -29,11 +29,11 @@ func start_scaling(target_node: Node2D, scale_value: Vector2):
tween.tween_property(target_node, "scale", scale_value, scale_duration)
func scale_up_player():
target_scale_player = Vector2(0.5, 0.5)
target_scale_player = Vector2(3.0, 3.0)
start_scaling(player, target_scale_player)
func scale_down_player():
target_scale_player = Vector2(2.0, 2.0)
target_scale_player = Vector2(1.0, 1.0)
start_scaling(player, target_scale_player)
func mirror():