Browse Source

Adding DroppedBlock with a basic animation

pull/1/head
Ryan Reed 1 month ago
parent
commit
cfc5c93b12
6 changed files with 62 additions and 5 deletions
  1. +1
    -0
      autoloads/entity_manager.gd
  2. +1
    -0
      scenes/blocks/block.gd
  3. +39
    -0
      scenes/blocks/dropped_block.gd
  4. +1
    -0
      scenes/blocks/dropped_block.gd.uid
  5. +6
    -0
      scenes/blocks/dropped_block.tscn
  6. +14
    -5
      scenes/world/world.gd

+ 1
- 0
autoloads/entity_manager.gd View File

@ -1,3 +1,4 @@
extends Node extends Node
signal create_block(id: String, position: Vector3) signal create_block(id: String, position: Vector3)
signal drop_block(id: String, position: Vector3)

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

@ -2,6 +2,7 @@ class_name Block
extends StaticBody3D extends StaticBody3D
@onready var collision_shape: CollisionShape3D = $CollisionShape3D
@onready var highlight_mesh: MeshInstance3D = $HighlightMesh @onready var highlight_mesh: MeshInstance3D = $HighlightMesh
@onready var east_face: MeshInstance3D = $BlockFaces/EastFace @onready var east_face: MeshInstance3D = $BlockFaces/EastFace


+ 39
- 0
scenes/blocks/dropped_block.gd View File

@ -0,0 +1,39 @@
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
@onready var start_position: Vector3 = self.position
var tween: Tween
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)
block.collision_shape.disabled = true
func _run_animation() -> void:
tween = create_tween().set_loops()
tween.tween_property(
self,
"rotation_degrees",
Vector3(0, 360, 0),
spin_duration
).from_current()

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

@ -0,0 +1 @@
uid://bnqhdn88dg38n

+ 6
- 0
scenes/blocks/dropped_block.tscn View File

@ -0,0 +1,6 @@
[gd_scene load_steps=2 format=3 uid="uid://cadej8hyabido"]
[ext_resource type="Script" uid="uid://bnqhdn88dg38n" path="res://scenes/blocks/dropped_block.gd" id="1_50ggx"]
[node name="DroppedBlock" type="Node3D"]
script = ExtResource("1_50ggx")

+ 14
- 5
scenes/world/world.gd View File

@ -3,19 +3,23 @@ extends Node3D
const BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/block.tscn") const BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/block.tscn")
const DROPPED_BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/dropped_block.tscn")
func _ready() -> void: func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
EntityManager.create_block.connect(create_block.bind()) EntityManager.create_block.connect(create_block.bind())
EntityManager.drop_block.connect(create_dropped_block.bind())
_initialize_ground() _initialize_ground()
create_block("001", Vector3(2,1, 2))
create_block("002", Vector3(2,1, 1))
create_block("003", Vector3(1,1, 2))
create_block("004", Vector3(1,2, 2))
create_block("003", Vector3(-2,3, 2))
create_block("001", Vector3(2, 1, 2))
create_block("002", Vector3(2, 1, 1))
create_block("003", Vector3(1, 1, 2))
create_block("004", Vector3(1, 2, 2))
create_block("003", Vector3(-2, 3, 2))
create_dropped_block("004", Vector3(0, 2, -2))
func create_block(id: String, block_position: Vector3) -> void: func create_block(id: String, block_position: Vector3) -> void:
@ -25,6 +29,11 @@ func create_block(id: String, block_position: Vector3) -> void:
add_child(block) add_child(block)
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)
func _initialize_ground() -> void: func _initialize_ground() -> void:
for x: int in range(-10, 11): for x: int in range(-10, 11):


Loading…
Cancel
Save