diff options
author | Daniel Weipert <git@mail.dweipert.de> | 2024-10-02 19:23:19 +0200 |
---|---|---|
committer | Daniel Weipert <git@mail.dweipert.de> | 2024-10-02 19:23:19 +0200 |
commit | c8bd14d6feeca72fc96b895c9382ebc16a1caf55 (patch) | |
tree | 8423bdead9ce57d3dd62759cf362073ac5955eb3 /Units/default.gd |
initial commit
Diffstat (limited to 'Units/default.gd')
-rw-r--r-- | Units/default.gd | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/Units/default.gd b/Units/default.gd new file mode 100644 index 0000000..23987c3 --- /dev/null +++ b/Units/default.gd @@ -0,0 +1,49 @@ +class_name UnitDefault +extends Unit + + +var speed := 1000.0 +var direction := Vector2.RIGHT + + +func _physics_process(delta: float) -> void: + if not is_on_floor(): + velocity.x = 0 + velocity += get_gravity() * delta * Game.speed + $AnimatedSprite.play("fall") + + if $RayLeft.is_colliding(): + direction = Vector2.RIGHT + elif $RayRight.is_colliding(): + direction = Vector2.LEFT + + if is_on_floor(): + velocity.x = direction.x * speed * delta * Game.speed + + $AnimatedSprite.play("walk") + $AnimatedSprite.flip_h = direction.x < 0 + + move_and_slide() + var collision = get_last_slide_collision() + if collision: + var collider = collision.get_collider() as TileMapLayer + if collider is TileMapLayer: + var cell = collider.get_cell_tile_data(collider.get_coords_for_body_rid(collision.get_collider_rid())) as TileData + cell.set_collision_polygon_points(0, 0, PackedVector2Array([ + Vector2(-7,-7), Vector2(-7,7), Vector2(7,7), Vector2(7,-7) + ])) + + +func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void: + if event.is_action_pressed("select"): + get_viewport().set_input_as_handled() + var blocker = preload("res://Units/Blocker.tscn").instantiate() + blocker.position = global_position + get_tree().current_scene.add_child(blocker) + queue_free() + if event.is_action_pressed("select2"): + get_viewport().set_input_as_handled() + var blocker = preload("res://Units/Digger.tscn").instantiate() + blocker.position = global_position + get_tree().current_scene.add_child(blocker) + queue_free() |