Collision Result GC Leading to Engine Crash in GodotJS
- Lenguaje dominante
- C++
- Estrellas
- 1.1k
- Forks
- 80
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
### Version
4.1-v0.0.20-20240906
### System information
Windows11
### Issue description
```ts
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);
}
}
}
```
### Steps to reproduce
Just testing the above code
### Minimal reproduction project (MRP)
[game.zip](https://github.com/user-attachments/files/17529435/game.zip)
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.