Cocos2D中Action的进阶使用技巧(二)
发布时间:2020-12-14 16:52:02 所属栏目:百科 来源:网络整理
导读:大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上回说到解决办法是使用CCTargetedAction类. CCTargetedAction是一个很神奇的类,它本身没有什么动作效果,但是它可以把一个动
上回说到解决办法是使用CCTargetedAction类. CCTargetedAction是一个很神奇的类,它本身没有什么动作效果,但是它可以把一个动作和一个特定目标绑定起来,并且返回一个新的Action,我们就可以按需要操作这个新的动作了. 不过该类在Cocos2d-x中和Cocos2d-2.x中才存在,而本猫使用的Cocos2d的版本为最新的3.4.9.而在cocos2d 的v3版本中,CCTargetedAction类是不存在的. 不过好消息是,2.x版本中的对应类是可以在3.x中使用的,我们只需要将原来的代码拷贝到3.x中就可以了. 但是光拷贝是不行的,据说会将一个动作执行2遍,这时我们必须手动再加一条代码: -(BOOL)isDone{ return [_action isDone];
}
即在具体类中写一个完成方法的重载即可. 好了,在Cocos2d v3.4.9中的准备工作都已完成,下面是实现代码: NSMutableArray *actions = [NSMutableArray array];
for (BattleUnitRoot *unit in sortBattleUnits) {
BattleUnitRoot *target = _attackTargets[unit.playerData.battleIndex];
CCTargetedAction *atkAction = [CCTargetedAction actionWithTarget:unit.sprite action:
(CCActionFiniteTime*)[unit getAttackAction]];
CCTargetedAction *atkedAction = [CCTargetedAction actionWithTarget:target.sprite action:
(CCActionFiniteTime*)[target getAttackedAction]];
[actions addObject:atkAction];
[actions addObject:atkedAction];
}
CCActionSequence *seq = [CCActionSequence actionWithArray:actions];
[self runAction:seq];
编译运行,以下是实际游戏到效果动画: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |