#Moving object help

1 messages · Page 1 of 1 (latest)

vocal mesa
#

Sorry to bother, but does anyone know how to make movable(pushable) stuff in Godot 4?

vocal mesa
#

?

cobalt mountain
#

Use a RigidBody. You can also use a CharacterBody like this:

class_name MovableBlock extends CharacterBody2D

@export var gravity := 500
@export_range(0, 10) var weight := 0.5

var external_force_normal := 0.0

func _physics_process(delta: float) -> void:
    velocity.x = external_force_normal * (2000 / weight) * delta
    velocity.y += weight * gravity * delta
    external_force_normal = 0
    move_and_slide()

func push(normal_vector):
    external_force_normal = normal_vector.x

And in your player or whatever:

# ...
func _push_movables() -> void:
    for item in get_slide_collision_count():
        var collision = get_slide_collision(item)
        if collision.get_collider() is MovableBlock:
            collision.get_collider().push(-collision.get_normal())