Cocos2D中Action的进阶使用技巧(一)

前端之家收集整理的这篇文章主要介绍了Cocos2D中Action的进阶使用技巧(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)


大家对Cocos2d中动作的使用大概都很清楚了,其实本身action的概念也不复杂.

但是在某些情况下,一般的动作不能满足我们需求的时候,我们就必须使用更高级的Action方法解决问题.

比如,串行化(不是序列化哦,这是两个完全不同的概念)不同Action的执行…有些童鞋可能会说很简单,直接用CCActionSequence不就结了,但是等等我还没说完…这些串行执行的动作的目标是不同的.

再说的具体点,游戏中有2个队列,分别是我方队列和敌方队列,每个队列有若干unit,每个unit可以做攻击动作,同时每个unit也可以做被攻击的动作.现在要求的逻辑是:

  1. 取出一个unit发起攻击动作
  2. 等到攻击动作结束后,被攻击的unit再完成被攻击动作
  3. 依次串行化以上2个步骤,直到所有unit都处理完毕

看似简单的要求,如果使用正常的Action来完成就会发现无从下手.其实一般的解决办法是有的,但是有限制,就是假定每个被攻击动作的时间都一致.这样可以通过特定延时的方法解决,伪代码如下:

Array *actions
for each unit in list
    attacker = unit
    attackTarget = unit.target
    CallBack *cb = ^{[attackTarget runAttackedAction]}
    Delay *delay = [delay 1];
    [actions addObject:attacker.attackAction];
    [actions addObject:cb];
    [actions addObject:delay];
end for

基本上类似如上的代码,注意其中增加了一个延时1秒钟,因为我知道AttackedAction大概要运行1秒钟.

如果每次AttackedAction运行的时间不确定的话,这招就没有用了.

我们这时必须使用另外一种Action:CCTargetedAction

猜你在找的Cocos2d-x相关文章