From 28d4505657484a6c15cf4b42c616e77624e2d08b Mon Sep 17 00:00:00 2001 From: Manu Date: Sun, 25 Apr 2021 02:22:07 +0200 Subject: [PATCH] add steps animation --- Level.tscn | 1 + Player.gd | 9 +++++++- Player.tres | 58 +++++++++++++++++++++++++++++++++++++++++++++----- character.png | Bin 5379 -> 20727 bytes 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/Level.tscn b/Level.tscn index 17c9049..1e4cc26 100644 --- a/Level.tscn +++ b/Level.tscn @@ -15,6 +15,7 @@ tile_data = PoolIntArray( 393216, 0, 0, 393217, 0, 0, 393219, 0, 0, 393220, 0, 0 [node name="Player" parent="." index="2" instance=ExtResource( 2 )] position = Vector2( 800, 440 ) +speed = 10.0 tile_position = Vector2( 8, 5 ) grid_path = NodePath("..") props_path = NodePath("../Props") diff --git a/Player.gd b/Player.gd index 14437f2..5837090 100644 --- a/Player.gd +++ b/Player.gd @@ -13,6 +13,8 @@ onready var grid = get_node(grid_path) as TileMap onready var props = get_node(props_path) as TileMap var last_move_time := 0.0 +var step_count := 0 +var stepped := false class Movement: var action: String @@ -73,12 +75,16 @@ func _process(delta): tile_position += current_movement.direction * delta * speed - var remaining = current_target - tile_position + var remaining : Vector2 = current_target - tile_position if remaining.dot(current_movement.direction) <= 0: tile_position = current_target current_target = null movement_queue.pop_front() + stepped = false + elif remaining.length() < 0.5 and not stepped: + step_count += 1 + stepped = true update_position() last_move_time = OS.get_ticks_msec() / 1000.0 @@ -89,3 +95,4 @@ func update_position(): func update_animation(): sprite.animation = sprite.animation if movement_queue.empty() else movement_queue.front().animation + sprite.frame = step_count % 2 diff --git a/Player.tres b/Player.tres index efe343d..edc6409 100644 --- a/Player.tres +++ b/Player.tres @@ -1,4 +1,4 @@ -[gd_resource type="SpriteFrames" load_steps=6 format=2] +[gd_resource type="SpriteFrames" load_steps=18 format=2] [ext_resource path="res://character.png" type="Texture" id=1] @@ -6,36 +6,84 @@ atlas = ExtResource( 1 ) region = Rect2( 0, 0, 160, 240 ) +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 1 ) +region = Rect2( 0, 240, 160, 240 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 0, 480, 160, 240 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 1 ) +region = Rect2( 0, 720, 160, 240 ) + [sub_resource type="AtlasTexture" id=2] atlas = ExtResource( 1 ) region = Rect2( 320, 0, 160, 240 ) +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 1 ) +region = Rect2( 320, 240, 160, 240 ) + +[sub_resource type="AtlasTexture" id=9] +atlas = ExtResource( 1 ) +region = Rect2( 320, 480, 160, 240 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 1 ) +region = Rect2( 320, 720, 160, 240 ) + [sub_resource type="AtlasTexture" id=3] atlas = ExtResource( 1 ) region = Rect2( 160, 0, 160, 240 ) +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 1 ) +region = Rect2( 160, 240, 160, 240 ) + +[sub_resource type="AtlasTexture" id=12] +atlas = ExtResource( 1 ) +region = Rect2( 160, 480, 160, 240 ) + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 1 ) +region = Rect2( 160, 720, 160, 240 ) + [sub_resource type="AtlasTexture" id=4] atlas = ExtResource( 1 ) region = Rect2( 480, 0, 160, 240 ) +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 1 ) +region = Rect2( 480, 240, 160, 240 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 1 ) +region = Rect2( 480, 480, 160, 240 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 1 ) +region = Rect2( 480, 720, 160, 240 ) + [resource] animations = [ { -"frames": [ SubResource( 1 ) ], +"frames": [ SubResource( 1 ), SubResource( 5 ), SubResource( 6 ), SubResource( 7 ) ], "loop": true, "name": "left", "speed": 5.0 }, { -"frames": [ SubResource( 2 ) ], +"frames": [ SubResource( 2 ), SubResource( 8 ), SubResource( 9 ), SubResource( 10 ) ], "loop": true, "name": "right", "speed": 5.0 }, { -"frames": [ SubResource( 3 ) ], +"frames": [ SubResource( 3 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ) ], "loop": true, "name": "front", "speed": 5.0 }, { -"frames": [ SubResource( 4 ) ], +"frames": [ SubResource( 4 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], "loop": true, "name": "back", "speed": 5.0 diff --git a/character.png b/character.png index 762523426089e75b1d046754e52bfe7d21597b15..0f3d6d158d15c2f9d82a14d879bdd509e15901d5 100644 GIT binary patch literal 20727 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