Browse Source

Reworking DroppedBlock to utilize AnimationPlayer instead of tweens

pull/1/head
Ryan Reed 1 month ago
parent
commit
6e9e18285b
5 changed files with 88 additions and 35 deletions
  1. +1
    -0
      scenes/blocks/block.gd
  2. +9
    -29
      scenes/blocks/dropped_block.gd
  3. +1
    -1
      scenes/blocks/dropped_block.gd.uid
  4. +75
    -2
      scenes/blocks/dropped_block.tscn
  5. +2
    -3
      scenes/world/world.gd

+ 1
- 0
scenes/blocks/block.gd View File

@ -56,6 +56,7 @@ func _apply_material(face: MeshInstance3D, material: StandardMaterial3D) -> void
func _apply_materials() -> void:
if east_face == null: return
if resource == null: return
# This could probably be improved/simplified
_apply_material(east_face, resource.material_east)


+ 9
- 29
scenes/blocks/dropped_block.gd View File

@ -2,36 +2,16 @@ class_name DroppedBlock
extends Node3D
@export var block_tilt: float = 15.0
#@export var bounce_height: float = 0.25
#@export var bounce_duration: float = 1.0
@export var spin_duration: float = 2.0
@export var block_size_scale: float = 0.25
@export var block_scale: float = .25
@onready var start_position: Vector3 = self.position
@onready var animation_player: AnimationPlayer = $AnimationPlayer
@onready var block: Block = $Block
func drop_block(block_id: String) -> void:
_create_block(block_id)
_run_animation()
func remove_block() -> void:
queue_free()
func _create_block(block_id: String) -> void:
var block: Block = World.BLOCK_PREFAB.instantiate()
block.rotation.z = block_tilt
block.set_id(block_id)
block.scale = Vector3(block_size_scale, block_size_scale, block_size_scale)
add_child(block)
func initialize(id: String, _position: Vector3) -> void:
_position.y -= .2 # Bring the block closer to the floor (Probably a better way to handle this)
position = _position
block.set_id(id)
block.collision_shape.disabled = true
func _run_animation() -> void:
var tween: Tween = create_tween().set_loops()
tween.tween_property(
self,
"rotation_degrees",
Vector3(0, 360, 0),
spin_duration
).from_current()
block.scale = Vector3(block_scale, block_scale, block_scale)
animation_player.play("start_animation")

+ 1
- 1
scenes/blocks/dropped_block.gd.uid View File

@ -1 +1 @@
uid://bnqhdn88dg38n
uid://dkd2qbndc3q1o

+ 75
- 2
scenes/blocks/dropped_block.tscn View File

@ -1,6 +1,79 @@
[gd_scene load_steps=2 format=3 uid="uid://cadej8hyabido"]
[gd_scene load_steps=6 format=3 uid="uid://bn2olldntd7a6"]
[ext_resource type="Script" uid="uid://bnqhdn88dg38n" path="res://scenes/blocks/dropped_block.gd" id="1_50ggx"]
[ext_resource type="Script" uid="uid://dkd2qbndc3q1o" path="res://scenes/blocks/dropped_block.gd" id="1_50ggx"]
[ext_resource type="PackedScene" uid="uid://col07xd76y60h" path="res://scenes/blocks/block.tscn" id="1_chlk1"]
[sub_resource type="Animation" id="Animation_kym7p"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Block:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Block:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0.261799)]
}
[sub_resource type="Animation" id="Animation_50ggx"]
resource_name = "start_animation"
length = 2.0
loop_mode = 1
step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("Block:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0), Vector3(0, 0.1, 0), Vector3(0, 0, 0), Vector3(0, -0.1, 0), Vector3(0, 0, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath("Block:rotation")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 1, 2),
"transitions": PackedFloat32Array(1, 1, 1),
"update": 0,
"values": [Vector3(0, 0, 0.261799), Vector3(0, 3.14159, 0.261799), Vector3(0, 6.28319, 0.261799)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kym7p"]
_data = {
&"RESET": SubResource("Animation_kym7p"),
&"start_animation": SubResource("Animation_50ggx")
}
[node name="DroppedBlock" type="Node3D"]
script = ExtResource("1_50ggx")
[node name="Block" parent="." instance=ExtResource("1_chlk1")]
transform = Transform3D(0.965926, -0.258819, 0, 0.258819, 0.965926, 0, 0, 0, 1, 0, 0, 0)
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_kym7p")
}
autoplay = "start_animation"

+ 2
- 3
scenes/world/world.gd View File

@ -19,7 +19,7 @@ func _ready() -> void:
create_block("004", Vector3(1, 2, 2))
create_block("003", Vector3(-2, 3, 2))
create_dropped_block("004", Vector3(0, 2, -2))
create_dropped_block("003", Vector3(0, 2, -2))
func create_block(id: String, block_position: Vector3) -> void:
@ -31,9 +31,8 @@ func create_block(id: String, block_position: Vector3) -> void:
func create_dropped_block(id: String, block_position: Vector3) -> void:
var block: DroppedBlock = DROPPED_BLOCK_PREFAB.instantiate()
block.position = block_position
add_child(block)
block.drop_block(id)
block.initialize(id, block_position)
func _initialize_ground() -> void:
for x: int in range(-10, 11):


Loading…
Cancel
Save