我正在尝试像这样使用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.
}
}];
}
之后,只需将所需的精灵添加到正确的位置,您将看到它们自己移动。
对于动画,最好使用可以在子画面上循环播放的纹理数组。
另外,您可以添加和删除一系列带有截面图像的小精灵,并像处理在传送带上移动的精灵一样移动它们。