|
|
|
|
@ -35,21 +35,22 @@ public partial class Asteroid : Node3D {
|
|
|
|
|
KinematicCollision3D collision = asteroidRb.MoveAndCollide(new(0, 0, speed * (float)delta));
|
|
|
|
|
if (collision?.GetCollider() is Node3D collider) {
|
|
|
|
|
GD.Print($"{Name} collides with {collider.GetParentNode3D().Name}");
|
|
|
|
|
if (collider is Asteroid asteroid) asteroid.Explode();
|
|
|
|
|
Explode();
|
|
|
|
|
Vector3 collisionPosition = collision.GetPosition();
|
|
|
|
|
if (collider is Asteroid asteroid) asteroid.Explode(collisionPosition);
|
|
|
|
|
Explode(collisionPosition);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//TODO: Change into collision with outer box
|
|
|
|
|
if (Position.Z >= 6.4f) {
|
|
|
|
|
GD.Print($"Asteroid {Name} below screen!");
|
|
|
|
|
Explode();
|
|
|
|
|
}
|
|
|
|
|
// if (Position.Z >= 6.4f) {
|
|
|
|
|
// GD.Print($"Asteroid {Name} below screen!");
|
|
|
|
|
// Explode(collisionPosition);
|
|
|
|
|
// }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Explode() {
|
|
|
|
|
private void Explode(Vector3 collisionPosition) {
|
|
|
|
|
if (explosion.Instantiate() is GpuParticles3D ex) {
|
|
|
|
|
GetParent().AddChild(ex);
|
|
|
|
|
ex.Position = Position;
|
|
|
|
|
ex.Position = collisionPosition;
|
|
|
|
|
ex.Emitting = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|