生成这块最常出现的两种怪象:敌人刷在屏幕里、或者一开局一口气涌出一片。
刷在屏幕里,多半是生成曲线画得不对,或者取位置时用了局部坐标当全局坐标。Path2D 那条线要放在屏幕外沿,实例化之后设的位置得是相对 Main 的坐标;如果 Main 本身有位移或缩放,用 global_position 更保险。先临时把敌人换成纯色方块并打印它的位置,一眼就能看出偏在哪。
一口气涌一片,通常是 Timer 配置和难度计算撞在一起。比如把 wait_time 写成了随分数递减的表达式,却没设下限,分数一涨就变成 0 甚至负数,定时器近乎连续触发。给间隔留个下限,别让它低于 0.1 秒。
再一个原因是清场没做干净,重开时上一局的 Timer 还在跑。new_game 里显式 stop 再 start,别假设它本来是停的。
出屏销毁没生效的话,敌人会一直堆在场景外,数量涨到几百个之后帧率掉下来,看起来像「越玩越卡」。用远程场景树(运行时的「远程」页签)数一下实例数量,比猜快。VisibleOnScreenNotifier2D 的信号要连上,且节点得挂在敌人场景里而不是 Main 里。
调这类问题有个顺序值得守:先固定所有随机量,让敌人从一个确定位置、按固定间隔生成,确认位置、朝向、销毁三件事都对,再把随机放回去。随机一开,观察成本会高很多。
