#Moving object help
1 messages · Page 1 of 1 (latest)
?
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())