export default class TestScript extends godot.PhysicsBody2D {
collink: any;
_ready() {
this.set_physics_process(true); // Enable physics processing
}
_physics_process(delta: number): void {
let velocity = new godot.Vector2();
if (godot.Input.is_action_pressed("up")) velocity.y -= 1;
if (godot.Input.is_action_pressed("down")) velocity.y += 1;
if (godot.Input.is_action_pressed("left")) velocity.x -= 1;
if (godot.Input.is_action_pressed("right")) velocity.x += 1;
// Normalize velocity vector and scale by speed and delta time
if (velocity.length() > 0) {
velocity.x *= 5;
velocity.y *= 5;
// Update position and handle collisions
// Without storing the collision result, the object is garbage collected (GC)
// which leads to game crashes on subsequent collision checks
const res = this.move_and_collide(velocity, false, 0.08, true);
if (res) this.collink = res; // Store collision result to prevent GC
console.log('res', res);
}
}
}
Version
4.1-v0.0.20-20240906
System information
Windows11
Issue description
Steps to reproduce
Just testing the above code
Minimal reproduction project (MRP)
game.zip