【发布时间】:2014-05-20 01:12:35
【问题描述】:
如何为具有多个子节点的节点创建 SpriteKit 动画,并将节点的多个部分作为一个组制作动画?
我有以下节点结构:
- Bird 有身体、尾巴、头部等的子节点
- 头部有上喙、下喙等子节点
在下面的示例中,我想为整个小鸟制作动画,所有孩子都弯腰捡起一颗种子。在弯腰时,鸟张开嘴吃种子。请注意,喙不是鸟的孩子,而是头节点的孩子。
//body does this action
SKAction* bendDown = [SKAction rotateToAngle:M_PI*0.3 duration:lookUpTiming];
//beak does this action
SKAction* openBeak = [SKAction rotateToAngle:-M_PI*0.175 duration:beakDuration + arc4random()%20/100.0];
//I need both actions to be played together as a group:
SKAction* bendAndOpenBeak = [SKAction group:@[bendDown, openBeak]];
//if I call this, the body will perform both actions.
[self runAction:bendAndOpenBeak completion:^{
}];
这是我可以在头节点上运行的代码,以使其子节点使用 runAction:onChildWithName: 执行操作但是,我需要将其作为一个组与主体(父节点的父节点)节点一起运行
-(SKAction*)openBeak
{
float angleUp = -M_PI*0.175;
float duration = beakDuration + arc4random()%20/100.0;
SKAction* rotateUp = [SKAction rotateToAngle:angleUp duration:duration];
rotateUp.timingMode = SKActionTimingEaseOut;
SKAction* rotateDown = [SKAction rotateToAngle:-angleUp duration: duration];
rotateUp.timingMode = SKActionTimingEaseOut;
return [SKAction group:@[[SKAction runAction:rotateUp onChildWithName:@"beakUpper"],
[SKAction runAction:rotateDown onChildWithName:@"beakLower"] ]];
}
【问题讨论】:
-
你需要展示更多才能得到真正的答案
-
自己是鸟的身体
-
这个问题你解决了吗?
-
@rptwsthi 我刚刚发布了一个完整的答案。
标签: animation ios7 sprite-kit skaction