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

@ -1,4 +1,4 @@
[gd_scene load_steps=13 format=4 uid="uid://ctc0arg3efa5k"] [gd_scene load_steps=12 format=4 uid="uid://ctc0arg3efa5k"]
[ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_87xn7"] [ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_87xn7"]
[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_wqskp"] [ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_wqskp"]
@ -7,8 +7,7 @@
[ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="6_xhax5"] [ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="6_xhax5"]
[ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="7_dyi0e"] [ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="7_dyi0e"]
[ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_16072"] [ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_16072"]
[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlock.tscn" id="8_ec71m"] [ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlockBig.tscn" id="8_ec71m"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="9_cc6eq"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"]
texture = ExtResource("2_wqskp") texture = ExtResource("2_wqskp")
@ -182,5 +181,3 @@ position = Vector2(-132, 311)
position = Vector2(162, 124) position = Vector2(162, 124)
collision_layer = 1 collision_layer = 1
ui_actions = NodePath("../UILayer/UI") ui_actions = NodePath("../UILayer/UI")
[node name="CanvasLayer2" parent="." index="12" instance=ExtResource("9_cc6eq")]

View file

@ -0,0 +1,194 @@
[gd_scene load_steps=12 format=4 uid="uid://cxsstkfcffdch"]
[ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_8kfuv"]
[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_4iioo"]
[ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_ys3sa"]
[ext_resource type="Texture2D" uid="uid://c61y0181w3sq2" path="res://textures/Level 01.png" id="4_n40i2"]
[ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="5_1tu7t"]
[ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="6_87gst"]
[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlockBig.tscn" id="7_l2s1x"]
[ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_3s3ae"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"]
texture = ExtResource("2_4iioo")
texture_region_size = Vector2i(32, 32)
0:0/0 = 0
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:0/0 = 0
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:0/0 = 0
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:0/0 = 0
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:0/0 = 0
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
5:0/0 = 0
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
6:0/0 = 0
6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
7:0/0 = 0
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
8:0/next_alternative_id = 4
8:0/0 = 0
8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
8:0/1 = 1
8:0/1/flip_v = true
8:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
8:0/2 = 2
8:0/2/transpose = true
8:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
8:0/3 = 3
8:0/3/flip_h = true
8:0/3/transpose = true
8:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
9:0/0 = 0
10:0/0 = 0
11:0/0 = 0
0:1/0 = 0
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:1/0 = 0
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:1/0 = 0
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:1/0 = 0
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:1/0 = 0
5:1/0 = 0
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
6:1/0 = 0
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
7:1/0 = 0
7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
8:1/0 = 0
8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
9:1/0 = 0
10:1/0 = 0
11:1/0 = 0
0:2/0 = 0
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
1:2/0 = 0
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
2:2/0 = 0
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
3:2/0 = 0
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
4:2/0 = 0
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
5:2/0 = 0
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16)
6:2/0 = 0
7:2/0 = 0
10:2/0 = 0
11:2/0 = 0
0:3/0 = 0
1:3/0 = 0
2:3/0 = 0
3:3/0 = 0
4:3/0 = 0
5:3/0 = 0
6:3/0 = 0
7:3/0 = 0
10:3/0 = 0
11:3/0 = 0
0:4/0 = 0
1:4/0 = 0
2:4/0 = 0
3:4/0 = 0
4:4/0 = 0
5:4/0 = 0
6:4/0 = 0
7:4/0 = 0
8:4/0 = 0
9:4/0 = 0
10:4/0 = 0
11:4/0 = 0
0:5/0 = 0
1:5/0 = 0
2:5/0 = 0
3:5/0 = 0
4:5/0 = 0
5:5/0 = 0
6:5/0 = 0
7:5/0 = 0
8:5/0 = 0
9:5/0 = 0
10:5/0 = 0
11:5/0 = 0
[sub_resource type="TileSet" id="TileSet_n3khe"]
tile_size = Vector2i(32, 32)
physics_layer_0/collision_layer = 1
sources/0 = SubResource("TileSetAtlasSource_e817v")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mvq46"]
shader = ExtResource("3_ys3sa")
shader_parameter/scroll_speed = 0.02
[node name="LevelBase" instance=ExtResource("1_8kfuv")]
[node name="Player" parent="." index="0"]
position = Vector2(-254, 99)
input_pickable = true
[node name="UI" parent="UILayer" index="0" node_paths=PackedStringArray("player")]
visible = false
mouse_filter = 2
player = NodePath("../../Player")
[node name="HBoxContainer" parent="UILayer/UI" index="0"]
offset_right = 296.0
offset_bottom = 96.0
mouse_filter = 0
[node name="Walls" parent="." index="4"]
collision_mask = 22
[node name="Ground" parent="Walls" index="0"]
position = Vector2(-7, 167)
[node name="Ceiling" parent="Walls" index="1"]
position = Vector2(57, -171)
[node name="LeftWall" parent="Walls" index="2"]
position = Vector2(-320, 26)
[node name="RightWall" parent="Walls" index="3"]
position = Vector2(338, 15)
[node name="Layer0" type="TileMapLayer" parent="." index="5"]
use_parent_material = true
tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAACAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wAAAAACAAEAAAD2/wEAAAACAAEAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAADAAIAAAAJAPv/AAAFAAAAAAAJAPz/AAAAAAEAAAAJAP3/AAAAAAEAAAAJAP7/AAAAAAEAAAAJAP//AAAAAAEAAAAJAAAAAAAAAAEAAAAJAAEAAAAAAAEAAAAJAAIAAAAAAAEAAAAJAAMAAAAAAAEAAAAJAAQAAAAFAAIAAAD3//v/AAABAAIAAAD4//v/AAABAAIAAAD5//v/AAABAAIAAAD6//v/AAABAAIAAAD7//v/AAABAAIAAAD8//v/AAABAAIAAAD9//v/AAABAAIAAAD+//v/AAABAAIAAAD///v/AAABAAIAAAAAAPv/AAABAAIAAAABAPv/AAABAAIAAAACAPv/AAABAAIAAAADAPv/AAABAAIAAAAEAPv/AAABAAIAAAAFAPv/AAABAAIAAAAGAPv/AAABAAIAAAAHAPv/AAABAAIAAAAIAPv/AAABAAIAAAD3/wQAAAABAAAAAAD4/wQAAAABAAAAAAD5/wQAAAABAAAAAAD6/wQAAAABAAAAAAD7/wQAAAAFAAIAAAD8/wQAAAABAAEAAAD9/wQAAAABAAEAAAD+/wQAAAABAAEAAAD//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAADAAIAAAACAAQAAAABAAAAAAADAAQAAAABAAAAAAAEAAQAAAABAAAAAAAFAAQAAAABAAAAAAAGAAQAAAABAAAAAAAHAAQAAAABAAAAAAAIAAQAAAABAAAAAAD7/wMAAAAAAAAAAAD8/wMAAAABAAAAAAD9/wMAAAABAAAAAAD+/wMAAAABAAAAAAD//wIAAAAAAAEAAAD//wEAAAAAAAAAAAAAAAEAAAAEAAIAAAABAAEAAAACAAAAAAABAAIAAAACAAEAAAABAAMAAAACAAEAAAD//wMAAAAFAAIAAAAAAAIAAAABAAEAAAAAAAMAAAABAAEAAAD3/wAAAAAIAAEAAGD4/wAAAAAIAAEAAGD5/wAAAAAIAAEAAGD6/wAAAAAIAAEAAGD7/wAAAAAIAAAAAVD3//3/AAAIAAEAAFD4//3/AAAIAAEAAFD5//3/AAAIAAEAAFD6//3/AAAIAAEAAFD7//3/AAAIAAEAAFD8//3/AAAIAAEAAFD9//3/AAAIAAEAAFD+//3/AAACAAAAAAAAAAAAAAAGAAIAAAAAAP//AAABAAIAAAD/////AAAAAAIAAAD///7/AAAHAAAAAAAAAP7/AAACAAAAAAABAP//AAAIAAAAAVD+//7/AAAAAAIAAAAFAAEAAAAIAAAAAAAFAAIAAAAIAAAAAQA=")
tile_set = SubResource("TileSet_n3khe")
[node name="TextureRect" type="TextureRect" parent="." index="6"]
z_index = -100
material = SubResource("ShaderMaterial_mvq46")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -320.0
offset_top = -158.0
offset_right = -320.0
offset_bottom = -158.0
grow_horizontal = 2
grow_vertical = 2
texture = ExtResource("4_n40i2")
stretch_mode = 1
[node name="Goal" parent="." index="7" instance=ExtResource("5_1tu7t")]
position = Vector2(582, -317)
[node name="MirrorOrb" parent="." index="8" instance=ExtResource("6_87gst")]
position = Vector2(-431, -212)
[node name="EnemyMover" parent="." index="9" instance=ExtResource("8_3s3ae")]
position = Vector2(-132, 311)
[node name="Block" parent="." index="10" node_paths=PackedStringArray("ui_actions") instance=ExtResource("7_l2s1x")]
position = Vector2(-65, 63)
ui_actions = NodePath("../UILayer/UI")
[node name="Block2" parent="." index="11" node_paths=PackedStringArray("ui_actions") instance=ExtResource("7_l2s1x")]
position = Vector2(-255, -32)
scale = Vector2(0.5, 0.5)
ui_actions = NodePath("../UILayer/UI")

View file

@ -1,10 +1,10 @@
[gd_scene load_steps=4 format=3 uid="uid://br6fngf5208j0"] [gd_scene load_steps=4 format=3 uid="uid://br6fngf5208j0"]
[ext_resource type="Texture2D" uid="uid://bplkveclkwuk" path="res://textures/block-big.png" id="1_ejp7j"] [ext_resource type="Texture2D" uid="uid://bplkveclkwuk" path="res://textures/block-blue.png" id="1_ejp7j"]
[ext_resource type="Script" path="res://scripts/resizable_block.gd" id="1_j40bu"] [ext_resource type="Script" path="res://scripts/resizable_block.gd" id="1_j40bu"]
[sub_resource type="CircleShape2D" id="CircleShape2D_h0307"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_sgemy"]
radius = 35.0143 size = Vector2(59, 59)
[node name="Block" type="StaticBody2D"] [node name="Block" type="StaticBody2D"]
collision_layer = 17 collision_layer = 17
@ -16,6 +16,6 @@ script = ExtResource("1_j40bu")
texture = ExtResource("1_ejp7j") texture = ExtResource("1_ejp7j")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_h0307") shape = SubResource("RectangleShape2D_sgemy")
[connection signal="input_event" from="." to="." method="_on_input_event"] [connection signal="input_event" from="." to="." method="_on_input_event"]

View file

@ -0,0 +1,21 @@
[gd_scene load_steps=4 format=3 uid="uid://0jn86aogkcne"]
[ext_resource type="Script" path="res://scripts/resizable_block.gd" id="1_bulc3"]
[ext_resource type="Texture2D" uid="uid://dyl3dsoub6pmu" path="res://textures/block-small.png" id="2_42gyy"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_vlk61"]
size = Vector2(30, 30)
[node name="Block" type="StaticBody2D"]
collision_layer = 17
collision_mask = 22
input_pickable = true
script = ExtResource("1_bulc3")
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("2_42gyy")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_vlk61")
[connection signal="input_event" from="." to="." method="_on_input_event"]

View file

@ -17,8 +17,8 @@ config/icon="res://icon.svg"
[display] [display]
window/size/viewport_width=1280 window/size/viewport_width=640
window/size/viewport_height=720 window/size/viewport_height=320
window/size/mode=2 window/size/mode=2
window/stretch/mode="viewport" window/stretch/mode="viewport"

View file

@ -8,13 +8,30 @@ var is_touching_floor : bool = true
var jump_buffer_timer : float var jump_buffer_timer : float
var coyote_timer : float = 0.2 var coyote_timer : float = 0.2
var input_direction = 0 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 data_link: Line2D
var target_scale var target_scale
@export var scale_duration: float = 0.5
var current_selected = "none"
var target_scale_player: Vector2 = Vector2(1, 1)
func _ready(): func _ready():
data_link = $data_link 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): func get_input(delta):
var left = Input.is_action_pressed("player_left") var left = Input.is_action_pressed("player_left")
var right = Input.is_action_pressed("player_right") var right = Input.is_action_pressed("player_right")
@ -85,3 +102,15 @@ func find_nearest_block() -> Node2D:
closest_distance = distance closest_distance = distance
closest_block = block closest_block = block
return closest_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 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_down_target: Vector2 = Vector2(0.5, 0.5)
@export var scale_duration: float = 0.5 @export var scale_duration: float = 0.5
@export var ui_actions: Node @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(): func _ready():
add_to_group("scalable_blocks") 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): func _process(delta):
#if event is InputEventMouseButton and event.pressed: change_sprite_based_on_scale()
#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 scale_up(): func scale_up():
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "scale", scale_up_target, scale_duration) tween.tween_property(self, "scale", scale_up_target, scale_duration)
change_sprite_based_on_scale()
func scale_down(): func scale_down():
var tween = create_tween() var tween = create_tween()
tween.tween_property(self, "scale", scale_down_target, scale_duration) 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 current_selected = "none"
var target_scale_player: Vector2 = Vector2(1, 1) 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"): if event.is_action_pressed("click"):
var nearest_block = player.find_nearest_block() var nearest_block = player.find_nearest_block()
if nearest_block and current_selected == "scale_up": if nearest_block and current_selected == "scale_up":
nearest_block.scale_up() nearest_block.scale_up()
scale_up_player() scale_up_player()
elif nearest_block and current_selected == "scale_down": elif nearest_block:
nearest_block.scale_down() nearest_block.scale_down()
scale_down_player() 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) tween.tween_property(target_node, "scale", scale_value, scale_duration)
func scale_up_player(): 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) start_scaling(player, target_scale_player)
func scale_down_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) start_scaling(player, target_scale_player)
func mirror(): func mirror():

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

Before

Width:  |  Height:  |  Size: 410 B

After

Width:  |  Height:  |  Size: 410 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 B