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

本文探讨了在Cocos2d中如何使用更高级的Action方法解决常规动作无法满足的需求,特别是针对不同目标的串行化动作执行问题,并提出了一种利用CCTargetedAction的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


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

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

比方,串行化(不是序列化哦,这是两个全然不同的概念)不同Action的执行…有些童鞋可能会说非常easy,直接用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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值