关于一个玩家死亡的报错请大佬们看看
godot吧
全部回复
仅看楼主
level 6
DeafCat 楼主
在玩家死亡后,死亡动画卡在第一帧不动,按下跳跃键后死亡动画播放完并报错
[泪]
2023年11月24日 03点11分 1
level 6
移到free前面?
2023年11月24日 05点11分 2
level 9
因为你提前queue free了,你把他释放掉了还让他跑啥代码?
2023年11月24日 05点11分 3
level 6
在health = 0前加一句: set_physics_process(false) 。不知道你有没有发现,就算你的人物死亡后,你的_physics_process仍然在不停的运行,然后合理猜测应该是在死亡之前的逻辑里去播放了其他的动画,然后最后到死亡判定后又去play了死亡动画,这样一来,每一帧都在播放死亡动画的第一帧,同时也开启了一个协程等待动画结束信号。但就像上面所说的那样,每一帧都在播放死亡动画第一帧,所以动画永远不会结束,n个协程一直在等待一个不会出现的信号。至于按了跳跃键动画播放,合理猜测是你按了跳跃键后状态改变,没有在_physics_process中的死亡逻辑前触发播放其他动画的逻辑,所以死亡动画开始正常播放了。当播放完后,n个等待的协程开始处理死亡逻辑,第一个协程首先将玩家queue_free掉,因为queue_free是延迟释放的,这时没有被销毁执行get_tree()是能得到场景树的,是没有问题的。但后面的协程就不一定了,所以报了错
2023年11月24日 06点11分 4
原来是这样,感谢大佬!!!
2023年11月24日 08点11分
level 3
[喷]这段代码我和你几乎一样,只不过报错不一样
2024年01月03日 13点01分 6
1