Updated moving platform. Reworked platform icons

This commit is contained in:
2026-06-13 21:41:16 +03:00
parent 22475d78c2
commit 5c766913d1
10 changed files with 631 additions and 179 deletions
+5 -5
View File
@@ -4,7 +4,7 @@
[ext_resource type="Script" uid="uid://bc114fx0hcb6s" path="res://game/levels/test_level.gd" id="2_a2sw7"]
[ext_resource type="PackedScene" uid="uid://ct6n0u0iegynv" path="res://game/doors/lever_door.tscn" id="2_r01v2"]
[ext_resource type="PackedScene" uid="uid://b3kyqvuxmfn8f" path="res://game/objects/decorative/fireplace.tscn" id="3_tuvkr"]
[ext_resource type="PackedScene" uid="uid://jab32eoyc523" path="res://game/platform/self_moving_platform.tscn" id="4_h1708"]
[ext_resource type="PackedScene" uid="uid://jab32eoyc523" path="res://game/platform/moving_platform.tscn" id="4_h1708"]
[ext_resource type="PackedScene" uid="uid://g0n5npbt3hb2" path="res://game/doors/circle_door.tscn" id="4_yrqjd"]
[ext_resource type="PackedScene" uid="uid://cojxqx5al7kyv" path="res://game/doors/locked_door.tscn" id="5_1skah"]
[ext_resource type="PackedScene" uid="uid://dwvv5dj8lqif2" path="res://game/doors/triangle_door.tscn" id="6_75eok"]
@@ -27,9 +27,9 @@
[sub_resource type="Curve2D" id="Curve2D_h1708"]
_data = {
"points": PackedVector2Array(0, 0, 0, 0, 229, -75, 0, 0, 0, 0, 47, -75, 0, 0, 0, 0, 160, -26, 0, 0, 0, 0, 229, -75)
"points": PackedVector2Array(0, 0, 0, 0, 229, -75, 0, 0, 0, 0, 47, -75)
}
point_count = 4
point_count = 2
[node name="TestLevel" unique_id=600627332 instance=ExtResource("1_15okj")]
script = ExtResource("2_a2sw7")
@@ -38,10 +38,10 @@ script = ExtResource("2_a2sw7")
position = Vector2(274, -81)
platform_width = 48
[node name="SelfMovingPlatform" parent="Platforms" parent_id_path=PackedInt32Array(1140671629) index="1" unique_id=349378100 node_paths=PackedStringArray("path_follow") instance=ExtResource("4_h1708")]
[node name="SelfMovingPlatform" parent="Platforms" parent_id_path=PackedInt32Array(1140671629) index="1" unique_id=349378100 node_paths=PackedStringArray("path", "path_follow") instance=ExtResource("4_h1708")]
position = Vector2(201.03143, -75)
rotation = -3.1415925
is_loop = true
path = NodePath("../Path2D")
path_follow = NodePath("../Path2D/PathFollow2D")
platform_width = 104
+15
View File
@@ -3,6 +3,21 @@ class_name AbstractPlatform
extends AnimatableBody2D
const ANIMATION_COLOR_SWITCHING = "color_switching"
const ANIMATION_HIDING = "hiding"
const ANIMATION_TIMER = "timer"
const ANIMATION_SELF_MOVING = "self_moving"
const ANIMATION_MOVING_PREFIX = "moving_"
const ANIMATION_MOVING_UP = "up"
const ANIMATION_MOVING_DOWN = "down"
const ANIMATION_MOVING_LEFT = "left"
const ANIMATION_MOVING_RIGHT = "right"
const ANIMATION_ACTIVE_SUFFIX = "_active"
const ANIMATION_STATIC_SUFFIX = "_static"
const TILE_SIZE = 8
const MIN_WIDTH = TILE_SIZE * 2
const MAX_WIDTH = TILE_SIZE * 32
+475
View File
@@ -4,6 +4,7 @@
[ext_resource type="Material" uid="uid://2hd2pw5cgn1r" path="res://game/materials/platform_gray.tres" id="2_2ivtb"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="2_31xwx"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_jsq8n"]
[ext_resource type="Texture2D" uid="uid://bi2h4g71bro7v" path="res://images/level/platform-icons.png" id="5_hgabr"]
[sub_resource type="ViewportTexture" id="ViewportTexture_2ivtb"]
viewport_path = NodePath("SubViewport")
@@ -16,6 +17,478 @@ shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("2_31xwx")
shader_parameter/seed = 0.1415489
[sub_resource type="AtlasTexture" id="AtlasTexture_hgabr"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 0, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_j4n83"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 0, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_j4t02"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 0, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_uwu3e"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 0, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_dtkpf"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 8, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_33abs"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 8, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_663ty"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 8, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_v0w7w"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 8, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_rrd5t"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ml711"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_7k0y4"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_gdgnj"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_xw306"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_dum6q"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 56, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_yehga"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_nqnxw"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ihg8w"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_0y7uy"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_5tx3c"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_uxm1i"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_yj8cj"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 24, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ehe7o"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_5v8yk"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ves0l"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_nnitb"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_dd62t"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_w5ro3"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_5xqsc"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 32, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_nkc6h"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ysy4a"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_lwy5x"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_km3nq"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_mtmno"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_qiapf"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_s6swh"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 40, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_7ekpm"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_tki5g"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_nkxw8"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_0eeow"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_eokgk"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_n8r07"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_vri0m"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 16, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_dwv5n"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_w2vlx"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_eqsoo"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_bc1yh"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_7l6bg"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_17vh2"]
atlas = ExtResource("5_hgabr")
region = Rect2(40, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_4ep6y"]
atlas = ExtResource("5_hgabr")
region = Rect2(32, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_mwtcp"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_eb8av"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_egipa"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_4g8bw"]
atlas = ExtResource("5_hgabr")
region = Rect2(0, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_mhe6c"]
atlas = ExtResource("5_hgabr")
region = Rect2(8, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_d8o7t"]
atlas = ExtResource("5_hgabr")
region = Rect2(16, 64, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_txrl7"]
atlas = ExtResource("5_hgabr")
region = Rect2(24, 64, 8, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_j4n83"]
animations = [{
"frames": [{
"duration": 5.0,
"texture": SubResource("AtlasTexture_hgabr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j4n83")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_j4t02")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_uwu3e")
}, {
"duration": 5.0,
"texture": SubResource("AtlasTexture_dtkpf")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_33abs")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_663ty")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_v0w7w")
}],
"loop": true,
"name": &"color_switching",
"speed": 10.0
}, {
"frames": [],
"loop": true,
"name": &"default",
"speed": 5.0
}, {
"frames": [{
"duration": 15.0,
"texture": SubResource("AtlasTexture_rrd5t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ml711")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7k0y4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gdgnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xw306")
}, {
"duration": 2.0,
"texture": SubResource("AtlasTexture_dum6q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xw306")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gdgnj")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7k0y4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ml711")
}],
"loop": true,
"name": &"hiding",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yehga")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nqnxw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ihg8w")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0y7uy")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5tx3c")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_uxm1i")
}],
"loop": true,
"name": &"moving_down_active",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_yj8cj")
}],
"loop": true,
"name": &"moving_down_static",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_ehe7o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_5v8yk")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ves0l")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nnitb")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_dd62t")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_w5ro3")
}],
"loop": true,
"name": &"moving_left_active",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_5xqsc")
}],
"loop": true,
"name": &"moving_left_static",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_nkc6h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ysy4a")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_lwy5x")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_km3nq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mtmno")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_qiapf")
}],
"loop": true,
"name": &"moving_right_active",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_s6swh")
}],
"loop": true,
"name": &"moving_right_static",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_7ekpm")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_tki5g")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_nkxw8")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_0eeow")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eokgk")
}, {
"duration": 3.0,
"texture": SubResource("AtlasTexture_n8r07")
}],
"loop": true,
"name": &"moving_up_active",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_vri0m")
}],
"loop": true,
"name": &"moving_up_static",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_dwv5n")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w2vlx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eqsoo")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_bc1yh")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7l6bg")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_17vh2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4ep6y")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mwtcp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_eb8av")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_egipa")
}],
"loop": true,
"name": &"self_moving",
"speed": 10.0
}, {
"frames": [{
"duration": 15.0,
"texture": SubResource("AtlasTexture_4g8bw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mhe6c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_d8o7t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_txrl7")
}],
"loop": true,
"name": &"timer",
"speed": 10.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_jsq8n"]
resource_local_to_scene = true
size = Vector2(16, 7)
@@ -53,6 +526,8 @@ size_flags_horizontal = 4
size_flags_vertical = 4
[node name="IconSprite" type="AnimatedSprite2D" parent="SubViewport" unique_id=1917841765]
position = Vector2(8, 4)
sprite_frames = SubResource("SpriteFrames_j4n83")
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=175449124]
position = Vector2(0, -0.5)
+88
View File
@@ -0,0 +1,88 @@
@tool
class_name MovingPlatform
extends AbstractPlatform
enum Type {
SelfMoving,
LeftRight,
RightLeft,
UpDown,
DownUp,
}
const ANIMATION_MAP : Dictionary[Type, Dictionary] = {
Type.LeftRight: { false: ANIMATION_MOVING_LEFT, true: ANIMATION_MOVING_RIGHT },
Type.RightLeft: { false: ANIMATION_MOVING_RIGHT, true: ANIMATION_MOVING_LEFT },
Type.UpDown: { false: ANIMATION_MOVING_UP, true: ANIMATION_MOVING_DOWN },
Type.DownUp: { false: ANIMATION_MOVING_DOWN, true: ANIMATION_MOVING_UP },
}
@export var is_loop := false
@export var type := Type.SelfMoving
@export var path : Path2D
@export var path_follow : PathFollow2D
@export_range(0, 25, 0.1) var speed : float = 10.0
var is_moving := false
var is_reverse := false
var tween: Tween
@onready var restart_timer : Timer = $RestartTimer
func _ready() -> void:
super._ready()
if not Engine.is_editor_hint() and type == Type.SelfMoving:
start_movement()
else:
_select_animation()
func _select_animation() -> void:
if type == Type.SelfMoving:
if not icon_sprite.is_playing():
icon_sprite.play(ANIMATION_SELF_MOVING)
return
var direction : String = ANIMATION_MAP[type][is_reverse]
var suffix := ANIMATION_ACTIVE_SUFFIX if is_moving else ANIMATION_STATIC_SUFFIX
icon_sprite.play(ANIMATION_MOVING_PREFIX + direction + suffix)
func start_movement() -> void:
is_moving = true
if tween and tween.is_running():
tween.kill()
_select_animation()
var target_progress := 0.0 if is_reverse else path.curve.get_baked_length()
var distance := absf(target_progress - path_follow.progress)
var duration := distance / speed
tween = create_tween()
var target_ratio := 0.0 if is_reverse else 1.0
tween.tween_property(path_follow, "progress_ratio", target_ratio, duration)
tween.finished.connect(_restart_movement)
func stop_movement() -> void:
is_moving = false
if tween and tween.is_running():
tween.kill()
_select_animation()
func _restart_movement() -> void:
is_moving = false
if is_loop:
path_follow.progress_ratio = 0
else:
is_reverse = not is_reverse
_select_animation()
restart_timer.start()
+46
View File
@@ -0,0 +1,46 @@
[gd_scene format=3 uid="uid://jab32eoyc523"]
[ext_resource type="PackedScene" uid="uid://guvijso3k6eq" path="res://game/platform/abstract_platform.tscn" id="1_aar0q"]
[ext_resource type="Script" uid="uid://cwji3vqis6w6b" path="res://game/platform/moving_platform.gd" id="2_c250g"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="3_7t213"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="4_8q4q1"]
[sub_resource type="ViewportTexture" id="ViewportTexture_aar0q"]
viewport_path = NodePath("SubViewport")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_c250g"]
resource_local_to_scene = true
shader = ExtResource("3_7t213")
shader_parameter/tile_size = 8.0
shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("4_8q4q1")
shader_parameter/seed = 0.94376683
[sub_resource type="RectangleShape2D" id="RectangleShape2D_7t213"]
resource_local_to_scene = true
size = Vector2(16, 7)
[node name="MovingPlatform" unique_id=137546339 instance=ExtResource("1_aar0q")]
script = ExtResource("2_c250g")
is_loop = false
type = 0
speed = 10.0
[node name="Sprite2D" parent="." index="0" unique_id=264863796]
texture = SubResource("ViewportTexture_aar0q")
[node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918]
material = SubResource("ShaderMaterial_c250g")
[node name="IconSprite" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="1" unique_id=1917841765]
animation = &"self_moving"
frame_progress = 0.80246073
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_7t213")
[node name="RestartTimer" type="Timer" parent="." index="3" unique_id=1793755125]
wait_time = 3.0
one_shot = true
[connection signal="timeout" from="RestartTimer" to="." method="start_movement"]
-3
View File
@@ -1,3 +0,0 @@
[gd_scene format=3 uid="uid://egknefyib2ui"]
[node name="PlatformPath" type="Line2D" unique_id=2089103569]
-50
View File
@@ -1,50 +0,0 @@
@tool
class_name SelfMovingPlatform
extends AbstractPlatform
const SPEED_FACTOR = 0.025
const ANIMATION_ACTIVE = "active"
@export var is_loop := false
@export var path_follow : PathFollow2D
@export_range(0, 25, 0.1) var speed : float = 10.0
var is_reverse := false
var tween: Tween
func _ready() -> void:
super._ready()
icon_sprite.play(ANIMATION_ACTIVE)
if not Engine.is_editor_hint():
_start_movement()
func _start_movement() -> void:
if tween and tween.is_running():
tween.kill()
var target := 0.0 if is_reverse else 1.0
var distance := absf(target - path_follow.progress_ratio)
var duration := distance / (speed * SPEED_FACTOR)
tween = create_tween()
if not is_loop:
tween.set_trans(Tween.TRANS_SINE)
tween.set_ease(Tween.EASE_IN_OUT)
tween.finished.connect(_on_tween_finished)
tween.tween_property(path_follow, "progress_ratio", target, duration)
func _on_tween_finished() -> void:
if is_loop:
path_follow.progress_ratio = 0
else:
is_reverse = not is_reverse
_start_movement()
-119
View File
@@ -1,119 +0,0 @@
[gd_scene format=3 uid="uid://jab32eoyc523"]
[ext_resource type="PackedScene" uid="uid://guvijso3k6eq" path="res://game/platform/abstract_platform.tscn" id="1_jmy7p"]
[ext_resource type="Script" uid="uid://cwji3vqis6w6b" path="res://game/platform/self_moving_platform.gd" id="2_ayqtn"]
[ext_resource type="Shader" uid="uid://d4hm3vjx1rhsf" path="res://game/shaders/platform.gdshader" id="2_ex4q8"]
[ext_resource type="Texture2D" uid="uid://cpcuokqv8u2xa" path="res://images/level/platform.png" id="3_ayqtn"]
[ext_resource type="Texture2D" uid="uid://bi2h4g71bro7v" path="res://images/level/platform-icons.png" id="5_ayqtn"]
[sub_resource type="ViewportTexture" id="ViewportTexture_ayqtn"]
viewport_path = NodePath("SubViewport")
[sub_resource type="ShaderMaterial" id="ShaderMaterial_v7ftt"]
resource_local_to_scene = true
shader = ExtResource("2_ex4q8")
shader_parameter/tile_size = 8.0
shader_parameter/platform_width = 24.0
shader_parameter/atlas = ExtResource("3_ayqtn")
shader_parameter/seed = 0.94376683
[sub_resource type="AtlasTexture" id="AtlasTexture_v7ftt"]
atlas = ExtResource("5_ayqtn")
region = Rect2(0, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_xuyth"]
atlas = ExtResource("5_ayqtn")
region = Rect2(8, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_4wvh7"]
atlas = ExtResource("5_ayqtn")
region = Rect2(16, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_q6fss"]
atlas = ExtResource("5_ayqtn")
region = Rect2(24, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_myyrw"]
atlas = ExtResource("5_ayqtn")
region = Rect2(32, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_q3dcw"]
atlas = ExtResource("5_ayqtn")
region = Rect2(40, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_gb0pd"]
atlas = ExtResource("5_ayqtn")
region = Rect2(32, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_sqmiv"]
atlas = ExtResource("5_ayqtn")
region = Rect2(24, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_mvt4t"]
atlas = ExtResource("5_ayqtn")
region = Rect2(16, 48, 8, 8)
[sub_resource type="AtlasTexture" id="AtlasTexture_ppe0t"]
atlas = ExtResource("5_ayqtn")
region = Rect2(8, 48, 8, 8)
[sub_resource type="SpriteFrames" id="SpriteFrames_22kvf"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_v7ftt")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_xuyth")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_4wvh7")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q6fss")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_myyrw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_q3dcw")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_gb0pd")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_sqmiv")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_mvt4t")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_ppe0t")
}],
"loop": true,
"name": &"active",
"speed": 10.0
}]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xuyth"]
resource_local_to_scene = true
size = Vector2(16, 7)
[node name="SelfMovingPlatform" unique_id=137546339 instance=ExtResource("1_jmy7p")]
script = ExtResource("2_ayqtn")
speed = 10.0
[node name="Sprite2D" parent="." index="0" unique_id=264863796]
texture = SubResource("ViewportTexture_ayqtn")
[node name="PlatformRect" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="0" unique_id=794315918]
material = SubResource("ShaderMaterial_v7ftt")
[node name="IconSprite" parent="SubViewport" parent_id_path=PackedInt32Array(226200089) index="1" unique_id=1917841765]
position = Vector2(8, 4)
sprite_frames = SubResource("SpriteFrames_22kvf")
animation = &"active"
frame_progress = 0.974508
[node name="CollisionShape2D" parent="." index="2" unique_id=175449124]
shape = SubResource("RectangleShape2D_xuyth")
Binary file not shown.