如何让SKSpriteNode在Objective C中使用Sprite Kit跟随另一个SKSpriteNode?

时间:2015-06-09 22:48:42

标签: objective-c sprite-kit

我有两个SKSpriteNodes:

SKSpriteNode *leader = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(20,20)];

SKSpriteNode *follower = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(20,20)];

我想知道追随者的最佳方式是什么"关注"领导节点的行动。

例如,如果我打电话:

SKAction *first = [SKAction moveBy:CGVectorMake(0, 100) duration:1.0];
SKAction *second = [SKAction moveBy:CGVectorMake(100,0) duration:1.0];
[leader runAction:[SKAction sequence:@[first, second]]];

如何让关注节点在其操作期间跟随领导节点? 如果我有10个关注节点怎么办?如何让每个节点跟在它前面的节点(如一条线)?

2 个答案:

答案 0 :(得分:0)

您应该为所有10个节点编写一个操作,以便它们跟随前面的节点。

node2应该MoveTo node1.position

将此方法放在更新功能中。

我建议您使用密钥分配操作。 在分配新的moveTo操作之前,每次更新都会删除使用该键的操作。

以下是一些代码:

$previous

只要您已经制作了变量,这应该可以正常工作。

节点将对角线排列到leaderNode。更改CGPointMake以调整其排列的位置。

如果您愿意,可以将此方法放在其他地方。可能将它放在与移动leaderNode的位置相同的位置。

因此,如果leaderInode在touchesMoved中移动,可以将其放在那里。

顺便说一句,如果你想让它变得紧凑,你可以把它变成一个循环。

答案 1 :(得分:0)

在这个简单的案例中,您可以将所有粉丝添加为领导者的孩子,并相对于领导者的位置..

[leader addchild:follower](x10)。

领导者的任何动作都会自动应用于孩子。