我在游戏中遇到了这种延迟或卡顿,我认为这可能是由于我让相机跟随我的玩家的方式。
这是代码:
func update(_ hp: CGPoint) {
let camMove = SKAction.move(to: CGPoint(x: hp.x, y: hp.y), duration: 0.2)
self.run(camMove)
}
上述函数是 SKCameraNode 的扩展,我基本上从场景更新函数中调用它。
它运行得很好,尽管有人提到口吃可能是由于重叠的动作,因为它在每一帧都被调用。我使用这种方法是因为持续时间允许相机更自然地跟随,而不是僵硬。
我正在寻找替代方案来消除这种 SKAction 重叠。
我曾尝试在运行新操作之前添加一个 removeallActions() 调用,但它必须发生得很快,因为相机根本不移动。另外,我尝试在动作中添加一个键并在下一个开始之前按键删除,但与 removeallActions() 相同,相机不会移动。
我还尝试了以下方法:
func moveCam(_ point: CGPoint) {
let camMove = SKAction.move(to: CGPoint(x: point.x, y: point.y), duration: 0.2)
self.run(camMove) {
self.moveCam(player.position)
}
}
这会停止重叠,但在一个动作结束和另一个结束之间会有轻微的延迟,这会导致不断出现难看的口吃。
我有一个想法尝试使用具有跟随行为的 SKAgents,但我不完全确定这将如何完成,或者它是否会很好。任何建议或解决方案将不胜感激。