我正在尝试像这样使用SpriteKit创建传送带效果

我的第一个反应是创建比屏幕大的传送带图像,然后通过动作永久地反复移动它。但这似乎不可行,因为它取决于屏幕尺寸。

有什么更好的方法吗?

同样显然,我想将东西(可以独立移动)放在传送带上,因此该节点是一个SKNode,其子sprite节点正在移动。

更新:我希望传送带“可视”移动;因此线条朝着移动的方向移动。

最佳答案

physicsBody应用于所有需要在传送带上移动的精灵,并将affectedByGravity属性设置为NO。

在此示例中,我假设代表您的传送带的spriteNode称为conveyor。同样,所有需要移动的精灵节点都具有字符串“moveable”作为其name属性。

然后,在您的-update:方法中,

-(void)update:(CFTimeInterval)currentTime
{
    [self enumerateChildNodesWithName:@"moveable" usingBlock:^(SKNode *node, BOOL *stop{
        if ([node intersectsNode:conveyor])
        {
            [node.physicsBody applyForce:CGVectorMake(-1, 0)];
            //edit the vector to get the right force. This will be too fast.
        }
    }];
}

之后,只需将所需的精灵添加到正确的位置,您将看到它们自己移动。

对于动画,最好使用可以在子画面上循环播放的纹理数组。

另外,您可以添加和删除一系列带有截面图像的小精灵,并像处理在传送带上移动的精灵一样移动它们。

10-08 16:39