ios - SpriteKit传送带

标签 ios iphone objective-c ios7 sprite-kit

我正在尝试使用 SpriteKit 创建传送带效果,如下所示

Screenshot

我的第一 react 是创建一个比屏幕大的传送带图像,然后用 Action 重复移动它。但这似乎不太好,因为它取决于屏幕尺寸。

有没有更好的方法来做到这一点?

很明显,我想把东西(可以独立移动)放在传送带上,这样节点就是一个带有正在移动的子 Sprite 节点的 SKNode。

更新:我希望传送带能够“视觉上”移动;因此线条的移动方向给人一种运动的印象。

最佳答案

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

在此示例中,我假设代表传送带的 spriteNode 称为“传送带”。此外,所有需要移动的 Sprite 节点都将字符串“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.
        }
    }];
}

之后,只需将所需的 Sprite 添加到正确的位置,您就会看到它们自行移动。

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

或者,您可以添加和删除一系列带有剖面图像的小 Sprite ,并像移动在传送带上移动的 Sprite 一样移动它们。

关于ios - SpriteKit传送带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21040217/

相关文章:

ios - CoreData NSFetchedResultsController 排序

ios - 如何同时支持 iOS 7 和 8 的 NSCalendar?

iphone - iPhone 上的同步与异步

iOS Core Data - 获取一个实体对象是否会自动从关系实体中获取所有对象?

ios - 如何初始化 uiView 框架

ios - 如何在通过 UITableViewCell 中的 XIB 加载的 subview 中对标签和 UILabels/UIImageViews 进行初始样式设置

ios - 试图在 'App Center Listed Platforms' 中设置 iPhone 和 iPad

javascript - Highcharts 4.0 iPhone/触摸屏滚动

ios - CollectionView 单元格上的 UISwipeGestureRecognizer 无法正常工作

iphone - 创建适用于 ipad 和 iphones 的动态 list 文件