SpriteKit:如何在跟踪节点但仅在节点移动 Y 像素后平滑地为 SKCameraNode 设置动画?

Cra*_*lot 3 ios sprite-kit sknode skcameranode

这个问题和其他问题讨论了如何使用 SKCameraNode 跟踪 SpriteKit 中的节点。

但是,我们的需求各不相同。

其他解决方案,例如更新update(_ currentTime: CFTimeInterval)SKScene 中相机的位置,不起作用,因为我们只想在节点将 Y 像素向下移动到屏幕后调整相机位置。

换句话说,如果节点向上移动 10 个像素,相机应该保持静止。如果节点向左或向右移动,相机应保持静止。

我们尝试随着时间的推移而不是立即对摄像机的位置进行动画处理,但是对内部的摄像机运行 SKActionupdate(_ currentTime: CFTimeInterval)无法执行任何操作。

Gen*_*ode 5

我只是很快就做了这个。我相信这就是你要找的?(实际动画很流畅,只是我不得不压缩GIF)

在此处输入图片说明

这是更新代码:

-(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */

    SKShapeNode *ball = (SKShapeNode*)[self childNodeWithName:@"ball"];
    if (ball.position.y>100) camera.position = ball.position;

    if (fabs(ball.position.x-newLoc.x)>10) {
        // move x
        ball.position = CGPointMake(ball.position.x+stepX, ball.position.y);
    }

    if (fabs(ball.position.y-newLoc.y)>10) {
        // move y
        ball.position = CGPointMake(ball.position.x, ball.position.y+stepY);
    }
}
Run Code Online (Sandbox Code Playgroud)